|
From: <got...@us...> - 2008-12-07 22:22:15
|
Revision: 131
http://scstudio.svn.sourceforge.net/scstudio/?rev=131&view=rev
Author: gotthardp
Date: 2008-12-07 21:53:49 +0000 (Sun, 07 Dec 2008)
Log Message:
-----------
Initial commit of the add-on for Microsoft Visio.
Added Paths:
-----------
trunk/src/view/visio/addon/
trunk/src/view/visio/addon/addon.cpp
trunk/src/view/visio/addon/addon.h
trunk/src/view/visio/addon/dllmodule.cpp
trunk/src/view/visio/addon/dllmodule.def
trunk/src/view/visio/addon/dllmodule.h
trunk/src/view/visio/addon/dllmodule.rc
trunk/src/view/visio/addon/dllmodule.rgs
trunk/src/view/visio/addon/document.cpp
trunk/src/view/visio/addon/document.h
trunk/src/view/visio/addon/errors.cpp
trunk/src/view/visio/addon/errors.h
trunk/src/view/visio/addon/eventsink.idl
trunk/src/view/visio/addon/reportview.cpp
trunk/src/view/visio/addon/reportview.h
trunk/src/view/visio/addon/resource.h
trunk/src/view/visio/addon/scstudio.vcproj
trunk/src/view/visio/addon/stdafx.cpp
trunk/src/view/visio/addon/stdafx.h
trunk/src/view/visio/scstudio.sln
Property Changed:
----------------
trunk/src/view/visio/
Property changes on: trunk/src/view/visio
___________________________________________________________________
Added: svn:ignore
+ *.ncb
*.suo
Property changes on: trunk/src/view/visio/addon
___________________________________________________________________
Added: svn:ignore
+ Debug
Release
dlldata.c
eventsink.h
eventsink_i.c
eventsink_p.c
*.aps
*.vcproj.*
Added: trunk/src/view/visio/addon/addon.cpp
===================================================================
--- trunk/src/view/visio/addon/addon.cpp (rev 0)
+++ trunk/src/view/visio/addon/addon.cpp 2008-12-07 21:53:49 UTC (rev 131)
@@ -0,0 +1,429 @@
+/*
+ * scstudio - Sequence Chart Studio
+ * http://scstudio.sourceforge.net
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * Copyright (c) 2007-2008 Petr Gotthard <pet...@ce...>
+ *
+ * $Id$
+ */
+
+#include "stdafx.h"
+#include "dllmodule.h"
+#include "addon.h"
+#include "document.h"
+#include "errors.h"
+#include "resource.h"
+
+// include command line parsing library SimpleOpt
+// http://code.jellycan.com/simpleopt
+#include <SimpleOpt.h>
+
+// include libraries from the Microsoft Office Visio 2003 SDK
+// http://www.microsoft.com/downloads/details.aspx?familyid=557120bd-b0bb-46e7-936a-b8539898d44d
+extern "C"
+{
+#include <Vao.c>
+}
+#include <Vaddon.cpp>
+#include <Addsink.cpp>
+
+const int MIN_VISIO_VERSION = 11;
+const _bstr_t VST_FILE_NAME = _T("Flowchart (VSL).vst");
+
+CStudioAddon scstudio(_T(ADDON_NAME), IDS_ADDON_NAME);
+
+const short visEvtPageAdded = Visio::visEvtAdd | Visio::visEvtPage;
+const short visEvtBeforeDocumentClose = Visio::visEvtDel | Visio::visEvtDoc;
+const short visEvtConnectionsAdded = Visio::visEvtAdd | Visio::visEvtConnect;
+const short visEvtConnectionsDeleted = Visio::visEvtDel | Visio::visEvtConnect;
+
+CStudioAddon::CStudioAddon(LPCTSTR pName, UINT uIDLocalName)
+ : VAddon(VAO_AOATTS_ISACTION, VAO_ENABLEALWAYS, 0, 0, pName, uIDLocalName)
+{
+ m_pIAddonSink = NULL;
+};
+
+const int _FILE_PATH_SIZE = _MAX_PATH * 4;
+
+_bstr_t GetVisioModulePath()
+{
+ TCHAR szPath[_FILE_PATH_SIZE];
+ TCHAR szDrive[_MAX_PATH];
+ TCHAR szDir[_FILE_PATH_SIZE];
+ TCHAR szFileName[_MAX_PATH];
+ TCHAR szExt[_MAX_PATH];
+ std::basic_string<TCHAR> strDir;
+ std::basic_string<TCHAR>::size_type uiPosition;
+
+ // Get the full path including the Addon name.
+ GetModuleFileName(GetModuleHandle(LoadStringResource(IDS_VSL_NAME)),
+ szPath, sizeof(szPath) / sizeof(TCHAR));
+
+ // Extract the path name of the Addon.
+ if (szPath)
+ {
+ _tsplitpath(szPath, szDrive, szDir, szFileName, szExt);
+ strDir = szDrive;
+ strDir += szDir;
+
+ // Extract the source path from the path name, since the path name
+ // that was extracted will be for the Debug or Release version,
+ // based on the project settings.
+ uiPosition = strDir.rfind('\\');
+
+ // If this is the last character in the string,
+ // then find the next ('\\').
+ if ((uiPosition != -1) && (uiPosition == strDir.size() - 1))
+ {
+ uiPosition = strDir.rfind('\\', uiPosition - 1);
+ }
+
+ // If it was the last character, then the position will be
+ // next found ('\\'). If it was not the last character,
+ // then this is the end of the actual Add-on path.
+ if (uiPosition != -1)
+ {
+ // Include the last ('\\') in the path.
+ strDir.resize(uiPosition + 1);
+ }
+
+ } // end szPath
+
+ return _bstr_t(strDir.c_str());
+}
+
+VAORC CStudioAddon::Run(LPVAOV2LSTRUCT pV2L)
+{
+ TRACE("CStudioAddon::Run() called");
+ Visio::IVApplicationPtr vsoApp;
+
+ try
+ {
+ // get a Visio::IVApplicationPtr for the Visio application
+ if (!vsoApp.GetInterfacePtr())
+ {
+ // First try to attach to the currently running Visio application.
+ // If that fails launch a new Visio application.
+ if (pV2L != NULL && pV2L->lpApp != NULL)
+ vsoApp = pV2L->lpApp;
+ else
+ if (!SUCCEEDED(vsoApp.GetActiveObject(Visio::CLSID_Application)))
+ vsoApp.CreateInstance(Visio::CLSID_Application);
+ }
+
+ if (!vsoApp.GetInterfacePtr())
+ return VAORC_FAILURE;
+
+ // get the major version number for Visio
+ int majorVersion = 0;
+ BSTR bstrVersion = NULL;
+ if (SUCCEEDED(vsoApp->get_Version(&bstrVersion)))
+ majorVersion = _ttoi(_bstr_t(bstrVersion));
+
+ if (bstrVersion != NULL)
+ SysFreeString(bstrVersion);
+
+ // make sure that we're running against the correct version of Visio
+ if (majorVersion == 0 || majorVersion < MIN_VISIO_VERSION)
+ {
+ DisplayException(vsoApp,
+ LoadStringResource(IDS_ERROR_VISIO_VERSION), MB_OK | MB_ICONEXCLAMATION);
+
+ return VAORC_SUCCESS;
+ }
+
+ Visio::IVDocumentPtr vsoDocument = vsoApp->GetActiveDocument();
+
+ // If the command-line argument is NULL, this add-on was called
+ // by selecting the VSL from Visio Tools|Macros menu.
+ if(pV2L->lpCmdLineArgs == NULL)
+ {
+ TRACE("CStudioAddon::Run() args=NULL");
+
+ // when no document is active
+ if(vsoDocument == NULL)
+ {
+ // open a new document based on the add-on template
+ _bstr_t bstrVSTName = GetVisioModulePath();
+ bstrVSTName += VST_FILE_NAME;
+
+ // check if template file exists
+ _tfinddata_t stFileInfo;
+ TCHAR * pszVSTName = (TCHAR *)bstrVSTName;
+ if (_tfindfirst(pszVSTName, &stFileInfo) == -1)
+ {
+ DisplayException(vsoApp,
+ bstrVSTName + LoadStringResource(IDS_ERROR_FILE_NOT_EXISTS), MB_OK);
+ return VAORC_FAILURE;
+ }
+
+ vsoDocument = vsoApp->GetDocuments()->Add(bstrVSTName);
+ }
+
+ CDocumentMonitor *pDocumentMonitor = GetDocumentMonitor(vsoApp, vsoDocument);
+ return VAORC_SUCCESS;
+ }
+ else
+ {
+ TCHAR* cmdline = _tcsdup(pV2L->lpCmdLineArgs);
+ TRACE("CStudioAddon::Run() cmdline=\"" << cmdline << "\"");
+
+ static const TCHAR* seps = _T(" \t");
+ int argc = 0;
+ TCHAR* argv[100];
+ // read the command-line string
+ TCHAR* token = _tcstok(cmdline, seps);
+ while(argc < _countof(argv) && token != NULL)
+ {
+ argv[argc++] = token;
+ token = _tcstok(NULL, seps);
+ }
+
+ enum
+ {
+ OPT_VISIO,
+ OPT_EVENT,
+ OPT_DOC,
+ OPT_PAGE,
+ OPT_SHAPE
+ };
+
+ static CSimpleOpt::SOption const long_options[] =
+ {
+ { OPT_VISIO, _T("-visio"), SO_REQ_CMB },
+ { OPT_EVENT, _T("-event"), SO_REQ_CMB },
+ { OPT_DOC, _T("-doc"), SO_REQ_CMB },
+ { OPT_PAGE, _T("-page"), SO_REQ_CMB },
+ { OPT_SHAPE, _T("-shape"), SO_REQ_CMB },
+ SO_END_OF_OPTIONS
+ };
+
+ // Parse the command-line arguments.
+ CSimpleOpt args(argc, argv, long_options, SO_O_USEALL);
+
+ int iVisio = 0;
+ int iEvent = 0;
+ int iDocumentIndex = 0;
+ int iPageIndex = 0;
+ _bstr_t sShape;
+
+ while(args.Next())
+ {
+ if(args.LastError() != SO_SUCCESS)
+ {
+ TRACE("CStudioAddon::Run() bad command-line argument=" << args.OptionText());
+ continue;
+ }
+
+ switch(args.OptionId())
+ {
+ case OPT_VISIO:
+ iVisio = _tstol(args.OptionArg());
+ break;
+ case OPT_EVENT:
+ iEvent = _tstol(args.OptionArg());
+ break;
+ case OPT_DOC:
+ iDocumentIndex = _tstol(args.OptionArg());
+ break;
+ case OPT_PAGE:
+ iPageIndex = _tstol(args.OptionArg());
+ break;
+ case OPT_SHAPE:
+ sShape = args.OptionArg();
+ break;
+ default:
+ TRACE("CStudioAddon::Run() unexpected argument id=" << args.OptionId());
+ break;
+ }
+ }
+ free(cmdline);
+
+ CDocumentMonitor *pDocumentMonitor = GetDocumentMonitor(vsoApp, vsoDocument);
+ // execute the relevant event handler
+ switch(iEvent)
+ {
+ // to keep the stencil compatibility, the 1xx events must not be renumbered
+ case 100:
+ TRACE("CStudioAddon::Run() stencil event 'OnDrop'");
+ return VAORC_SUCCESS;
+
+ case 201:
+ TRACE("CStudioAddon::Run() menu item 'Check--Run'");
+ return pDocumentMonitor->OnMenuRun(vsoApp);
+ case 202:
+ TRACE("CStudioAddon::Run() menu item 'Check--Windows--Verification Report'");
+ return pDocumentMonitor->OnMenuWindowsReporter(vsoApp);
+
+ default:
+ TRACE("CStudioAddon::Run() unexpected event id=" << iEvent);
+ return VAORC_FAILURE;
+ }
+ }
+ }
+ catch (_com_error &err)
+ {
+ DisplayException(vsoApp, err.ErrorMessage(), MB_OK);
+ }
+
+ return VAORC_SUCCESS;
+}
+
+VAORC CStudioAddon::Unload(WORD wParam, LPVOID p)
+{
+ DocumentMonitorsMap::iterator documentsIter;
+ // clean up the monitored document map
+ while ((documentsIter = m_DocumentMonitors.begin()) != m_DocumentMonitors.end())
+ {
+ delete documentsIter->second;
+ m_DocumentMonitors.erase(documentsIter);
+ }
+
+ // delete the marker Event
+ if (m_vsoMarkerEvent != NULL)
+ m_vsoMarkerEvent->Delete();
+
+ // release the sink if there is one
+ if (m_pIAddonSink)
+ {
+ m_pIAddonSink->Release();
+ m_pIAddonSink = NULL;
+ }
+
+ return VAddon::Unload(wParam, p);
+}
+
+HRESULT CStudioAddon::HandleVisioEvent(
+ IUnknown *ipSink, short nEventCode, IDispatch *pSourceObj, long nEventID,
+ long nEventSeqNum, IDispatch *pSubjectObj, VARIANT vMoreInfo, VARIANT *pvResult)
+{
+ TRACE("CStudioAddon::HandleVisioEvent() called");
+ try
+ {
+ if (ipSink == NULL || pSourceObj == NULL || pSubjectObj == NULL || pvResult == NULL)
+ {
+ TRACE("CStudioAddon::HandleVisioEvent() unexpected NULL");
+ return E_FAIL;
+ }
+
+ switch (nEventCode)
+ {
+ case visEvtPageAdded:
+ TRACE("CStudioAddon::HandleVisioEvent() visEvtPageAdded");
+ break;
+
+ case visEvtBeforeDocumentClose:
+ TRACE("CStudioAddon::HandleVisioEvent() visEvtBeforeDocumentClose");
+ break;
+
+ case visEvtConnectionsAdded:
+ TRACE("CStudioAddon::HandleVisioEvent() visEvtConnectionsAdded");
+ break;
+
+ case visEvtConnectionsDeleted:
+ TRACE("CStudioAddon::HandleVisioEvent() visEvtConnectionsDeleted");
+ break;
+
+ default:
+ TRACE("CStudioAddon::HandleVisioEvent() unexpected event id=" << nEventCode);
+ break;
+ }
+
+ return NOERROR;
+ }
+ catch (_com_error &) // catch exceptions thrown by Visio
+ {
+ return E_FAIL;
+ }
+}
+
+CDocumentMonitor *CStudioAddon::GetDocumentMonitor(Visio::IVApplicationPtr vsoApp, Visio::IVDocumentPtr vsoDocument)
+{
+ CDocumentMonitor *pDocumentMonitor = NULL;
+
+ long nID = vsoDocument->GetID();
+
+ DocumentMonitorsMap::iterator documentIter = m_DocumentMonitors.find(nID);
+ if (documentIter != m_DocumentMonitors.end())
+ {
+ // the document monitor already exists
+ return documentIter->second;
+ }
+
+ try
+ {
+ Visio::IVEventPtr vsoEvent;
+ Visio::IVEventListPtr vsoApplicationEventList;
+
+ Visio::IVEventListPtr vsoDocumentEventList = vsoDocument->EventList;
+
+ // create a sink object which point back to this class as the event handler
+ if(m_pIAddonSink == NULL)
+ CoCreateAddonSinkForHandler(0, this, &m_pIAddonSink);
+
+ if(m_pIAddonSink)
+ {
+ _variant_t varSink = m_pIAddonSink;
+
+ // If the add-on is not already listening to the marker event,
+ // create an event object for marker events. Marker events are
+ // sourced from the Application object.
+ if (m_vsoMarkerEvent == NULL)
+ {
+ vsoApplicationEventList = vsoApp->EventList;
+ m_vsoMarkerEvent = vsoApplicationEventList->AddAdvise(visEvtApp|visEvtMarker, varSink, _T(""), _T(""));
+ }
+
+ // Create a monitor class to keep track of this document and the Events
+ // being monitored for this document.
+ pDocumentMonitor = new CDocumentMonitor(this, vsoDocument);
+ pDocumentMonitor->InitMenu(vsoApp);
+
+ // register PageAdded
+ vsoEvent = vsoDocumentEventList->AddAdvise(visEvtPageAdded, varSink, _T(""), _T(""));
+ pDocumentMonitor->m_vsoPageAddedEvent = vsoEvent;
+
+ // register BeforeDocumentClose
+ vsoEvent = vsoDocumentEventList->AddAdvise(visEvtBeforeDocumentClose, varSink, _T(""), _T(""));
+ pDocumentMonitor->m_vsoBeforeDocumentClosedEvent = vsoEvent;
+
+ vsoDocumentEventList->AddAdvise(visEvtConnectionsAdded, varSink, _T(""), _T(""));
+ vsoDocumentEventList->AddAdvise(visEvtConnectionsDeleted, varSink, _T(""), _T(""));
+
+ // add this document to our monitored documents list
+ m_DocumentMonitors.insert(DocumentMonitorsMap::value_type(nID, pDocumentMonitor));
+
+ return pDocumentMonitor;
+ }
+ }
+ catch (_com_error &) // catch exceptions thrown by Visio
+ {
+ delete pDocumentMonitor;
+ }
+
+ return NULL;
+}
+
+void CStudioAddon::StopDocumentMonitor(Visio::IVApplicationPtr vsoApp, Visio::IVDocumentPtr vsoDocument)
+{
+ long nID = vsoDocument->GetID();
+
+ // the document is closing so stop monitoring its events
+ DocumentMonitorsMap::iterator documentIter = m_DocumentMonitors.find(nID);
+ if (documentIter != m_DocumentMonitors.end())
+ {
+ delete documentIter->second;
+ m_DocumentMonitors.erase(documentIter);
+ }
+}
+
+// $Id$
Property changes on: trunk/src/view/visio/addon/addon.cpp
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Added: trunk/src/view/visio/addon/addon.h
===================================================================
--- trunk/src/view/visio/addon/addon.h (rev 0)
+++ trunk/src/view/visio/addon/addon.h 2008-12-07 21:53:49 UTC (rev 131)
@@ -0,0 +1,60 @@
+/*
+ * scstudio - Sequence Chart Studio
+ * http://scstudio.sourceforge.net
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * Copyright (c) 2007-2008 Petr Gotthard <pet...@ce...>
+ *
+ * $Id$
+ */
+
+#pragma once
+
+#include "Vaddon.h"
+#include "AddSink.h"
+
+#include <map>
+
+class CReportView;
+class CDocumentMonitor;
+
+// internal add-on name
+#define ADDON_NAME "Sequence Chart Studio"
+
+class CStudioAddon : public VAddon, public VEventHandler
+{
+public:
+ CStudioAddon(LPCTSTR pNameU, UINT uIDLocalName);
+ virtual VAORC Run(LPVAOV2LSTRUCT pV2L);
+ virtual VAORC Unload(WORD wParam, LPVOID p);
+
+ virtual HRESULT HandleVisioEvent(
+ IUnknown *ipSink, // [in] ipSink [assert]
+ short nEventCode, // [in] code of event that's firing
+ IDispatch *pSourceObj, //! [in] object that is firing event
+ long nEventID, // [in] id of event that is firing
+ long nEventSeqNum, // [in] sequence number of event
+ IDispatch *pSubjectObj, // [in] subject of this event
+ VARIANT vMoreInfo, // [in] other info
+ VARIANT *pvResult); // [retval][out] return a value to Visio for query events
+
+ CDocumentMonitor *GetDocumentMonitor(Visio::IVApplicationPtr vsoApp, Visio::IVDocumentPtr vsoDocument);
+ void StopDocumentMonitor(Visio::IVApplicationPtr vsoApp, Visio::IVDocumentPtr vsoDocument);
+
+private:
+ IUnknown *m_pIAddonSink;
+ Visio::IVEventPtr m_vsoMarkerEvent;
+
+ typedef std::map<long, CDocumentMonitor*> DocumentMonitorsMap;
+ DocumentMonitorsMap m_DocumentMonitors;
+};
+
+// $Id$
Property changes on: trunk/src/view/visio/addon/addon.h
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Added: trunk/src/view/visio/addon/dllmodule.cpp
===================================================================
--- trunk/src/view/visio/addon/dllmodule.cpp (rev 0)
+++ trunk/src/view/visio/addon/dllmodule.cpp 2008-12-07 21:53:49 UTC (rev 131)
@@ -0,0 +1,90 @@
+/*
+ * scstudio - Sequence Chart Studio
+ * http://scstudio.sourceforge.net
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * Copyright (c) 2007-2008 Petr Gotthard <pet...@ce...>
+ *
+ * $Id$
+ */
+
+// implementation of DLL Exports
+
+#include "stdafx.h"
+#include "resource.h"
+#include "eventsink.h"
+#include "dllmodule.h"
+
+namespace ATL
+{
+
+class CStudioDllModule : public CAtlDllModuleT< CStudioDllModule >
+{
+public :
+ DECLARE_LIBID(LIBID_SCStudioLib)
+ DECLARE_REGISTRY_APPID_RESOURCEID(IDR_SCSTUDIO, "{F0C700DB-9781-48DA-83D2-E537117E2784}")
+};
+
+}; // namespace ATL
+
+ATL::CStudioDllModule _AtlModule;
+
+_bstr_t LoadStringResource(UINT uiID)
+{
+ // Get the module instance.
+ HINSTANCE hInstance = ATL::_AtlBaseModule.GetModuleInstance();
+
+ TCHAR szBuffer[100];
+ // Load the string from the string table.
+ LoadString(hInstance, uiID, szBuffer, sizeof(szBuffer) / sizeof(TCHAR));
+ return _bstr_t(szBuffer);
+}
+
+#ifdef _MANAGED
+#pragma managed(push, off)
+#endif
+
+//! DLL Entry Point
+extern "C" BOOL WINAPI DllMain(HINSTANCE /* hInstance */, DWORD dwReason, LPVOID lpReserved)
+{
+ return _AtlModule.DllMain(dwReason, lpReserved);
+}
+
+#ifdef _MANAGED
+#pragma managed(pop)
+#endif
+
+//! Used to determine whether the DLL can be unloaded by OLE
+STDAPI DllCanUnloadNow(void)
+{
+ return _AtlModule.DllCanUnloadNow();
+}
+
+//! Returns a class factory to create an object of the requested type
+STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
+{
+ return _AtlModule.DllGetClassObject(rclsid, riid, ppv);
+}
+
+//! Adds entries to the system registry
+STDAPI DllRegisterServer(void)
+{
+ // registers object, typelib and all interfaces in typelib
+ return _AtlModule.DllRegisterServer();
+}
+
+//! Removes entries from the system registry
+STDAPI DllUnregisterServer(void)
+{
+ return _AtlModule.DllUnregisterServer();
+}
+
+// $Id$
Property changes on: trunk/src/view/visio/addon/dllmodule.cpp
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Added: trunk/src/view/visio/addon/dllmodule.def
===================================================================
--- trunk/src/view/visio/addon/dllmodule.def (rev 0)
+++ trunk/src/view/visio/addon/dllmodule.def 2008-12-07 21:53:49 UTC (rev 131)
@@ -0,0 +1,9 @@
+; dllmodule.def : Declares the module parameters.
+
+LIBRARY "scstudio.vsl"
+
+EXPORTS
+ DllCanUnloadNow PRIVATE
+ DllGetClassObject PRIVATE
+ DllRegisterServer PRIVATE
+ DllUnregisterServer PRIVATE
Property changes on: trunk/src/view/visio/addon/dllmodule.def
___________________________________________________________________
Added: svn:eol-style
+ native
Added: trunk/src/view/visio/addon/dllmodule.h
===================================================================
--- trunk/src/view/visio/addon/dllmodule.h (rev 0)
+++ trunk/src/view/visio/addon/dllmodule.h 2008-12-07 21:53:49 UTC (rev 131)
@@ -0,0 +1,23 @@
+/*
+ * scstudio - Sequence Chart Studio
+ * http://scstudio.sourceforge.net
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * Copyright (c) 2007-2008 Petr Gotthard <pet...@ce...>
+ *
+ * $Id$
+ */
+
+#pragma once
+
+_bstr_t LoadStringResource(UINT uiID);
+
+// $Id$
Property changes on: trunk/src/view/visio/addon/dllmodule.h
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Added: trunk/src/view/visio/addon/dllmodule.rc
===================================================================
--- trunk/src/view/visio/addon/dllmodule.rc (rev 0)
+++ trunk/src/view/visio/addon/dllmodule.rc 2008-12-07 21:53:49 UTC (rev 131)
@@ -0,0 +1,124 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "winres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+ "#include ""winres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "1 TYPELIB ""scstudio.tlb""\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,1
+ PRODUCTVERSION 1,0,0,1
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "080004e4"
+ BEGIN
+ VALUE "CompanyName", "Masaryk University Brno"
+ VALUE "FileDescription", "Microsoft Visio add-on for design and verification of Message Sequence Charts (MSC)."
+ VALUE "FileVersion", "1.0.0.1"
+ VALUE "InternalName", "scstudio.vsl"
+ VALUE "LegalCopyright", "(c) Petr Gotthard. All rights reserved."
+ VALUE "OriginalFilename", "scstudio.vsl"
+ VALUE "ProductName", "Sequence Chart Studio"
+ VALUE "ProductVersion", "1.0.0.1"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x800, 1252
+ END
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// REGISTRY
+//
+
+IDR_SCSTUDIO REGISTRY "dllmodule.rgs"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE
+BEGIN
+ IDS_ADDON_NAME "Sequence Chart Studio"
+ IDS_ERROR_VISIO_VERSION "This application requires Microsoft Office Visio 2003 or later."
+ IDS_ERROR_FILE_NOT_EXISTS " does not exist."
+ IDS_VSL_NAME "msc.vsl"
+ IDS_REPORT_VIEW "Verification Report"
+END
+
+#endif // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+1 TYPELIB "scstudio.tlb"
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
Property changes on: trunk/src/view/visio/addon/dllmodule.rc
___________________________________________________________________
Added: svn:eol-style
+ native
Added: trunk/src/view/visio/addon/dllmodule.rgs
===================================================================
--- trunk/src/view/visio/addon/dllmodule.rgs (rev 0)
+++ trunk/src/view/visio/addon/dllmodule.rgs 2008-12-07 21:53:49 UTC (rev 131)
@@ -0,0 +1,11 @@
+HKCR
+{
+ NoRemove AppID
+ {
+ '%APPID%' = s 'scstudio'
+ 'scstudio.vsl'
+ {
+ val AppID = s '%APPID%'
+ }
+ }
+}
Property changes on: trunk/src/view/visio/addon/dllmodule.rgs
___________________________________________________________________
Added: svn:eol-style
+ native
Added: trunk/src/view/visio/addon/document.cpp
===================================================================
--- trunk/src/view/visio/addon/document.cpp (rev 0)
+++ trunk/src/view/visio/addon/document.cpp 2008-12-07 21:53:49 UTC (rev 131)
@@ -0,0 +1,141 @@
+/*
+ * scstudio - Sequence Chart Studio
+ * http://scstudio.sourceforge.net
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * Copyright (c) 2007-2008 Petr Gotthard <pet...@ce...>
+ *
+ * $Id$
+ */
+
+#include "stdafx.h"
+#include "dllmodule.h"
+#include "addon.h"
+#include "document.h"
+
+CDocumentMonitor::CDocumentMonitor(CStudioAddon *addon, Visio::IVDocumentPtr vsoDocument)
+{
+ m_addon = addon;
+ m_vsoDocument = vsoDocument;
+
+ m_reportVisible = false;
+ m_reportView = NULL;
+}
+
+CDocumentMonitor::~CDocumentMonitor()
+{
+ if (m_vsoBeforeDocumentClosedEvent != NULL)
+ m_vsoBeforeDocumentClosedEvent->Delete();
+
+ if (m_vsoPageAddedEvent != NULL)
+ m_vsoPageAddedEvent->Delete();
+}
+
+void CDocumentMonitor::InitMenu(Visio::IVApplicationPtr vsoApp)
+{
+ Visio::IVUIObjectPtr vsoMenus = NULL;
+
+ Visio::IVDocumentPtr vsoDocument = vsoApp->GetActiveDocument();
+ if(vsoDocument != NULL)
+ {
+ Visio::IVUIObjectPtr docMenus = vsoDocument->CustomMenus;
+ if(docMenus != NULL)
+ vsoMenus = docMenus->Clone;
+ }
+ if(vsoMenus == NULL)
+ {
+ Visio::IVUIObjectPtr appMenus = vsoApp->CustomMenus;
+ if(appMenus != NULL)
+ vsoMenus = appMenus->Clone;
+ }
+ if(vsoMenus == NULL)
+ vsoMenus = vsoApp->BuiltInMenus; // gets a clone
+
+ Visio::IVMenuSetPtr menuSet = vsoMenus->MenuSets->ItemAtID[Visio::visUIObjSetDrawing];
+
+ Visio::IVMenuPtr menu = menuSet->Menus->AddAt(5);
+ menu->Caption = "&Check";
+
+ Visio::IVMenuItemPtr menuItem1 = menu->MenuItems->Add();
+ menuItem1->Caption = "&Windows";
+ menuItem1->BeginGroup = true;
+ menuItem1->CmdNum = Visio::visCmdHierarchical;
+
+ Visio::IVMenuItemPtr menuItem2 = menu->MenuItems->Add();
+ menuItem2->Caption = "&Run";
+ menuItem2->AddOnName = ADDON_NAME;
+ menuItem2->AddOnArgs = "/event=201";
+ menuItem2->BeginGroup = true;
+
+ m_reportMenuItem = menuItem1->MenuItems->Add();
+ m_reportMenuItem->Caption = "Verification &Report";
+ m_reportMenuItem->AddOnName = ADDON_NAME;
+ m_reportMenuItem->AddOnArgs = "/event=202";
+
+ vsoDocument->SetCustomMenus(vsoMenus);
+}
+
+VAORC CDocumentMonitor::OnMenuRun(Visio::IVApplicationPtr vsoApp)
+{
+ if(!m_reportVisible)
+ ShowReportView(vsoApp);
+
+ m_reportView->Print("\\b No error detected.\\b0");
+
+ return VAORC_SUCCESS;
+}
+
+VAORC CDocumentMonitor::OnMenuWindowsReporter(Visio::IVApplicationPtr vsoApp)
+{
+ if(m_reportVisible)
+ // Close() --> CReportView::OnFinalMessage() --> CDocumentMonitor::OnHideReportView()
+ m_reportWindow->Close();
+ else
+ ShowReportView(vsoApp);
+
+ return VAORC_SUCCESS;
+}
+
+void CDocumentMonitor::ShowReportView(Visio::IVApplicationPtr vsoApp)
+{
+ if (m_reportView == NULL)
+ m_reportView = new CReportView(this);
+
+ Visio::IVWindowPtr vsoWindow = vsoApp->GetActiveWindow();
+
+ const int defWidth = 500;
+ const int defHeight = 200;
+ m_reportWindow = vsoWindow->Windows->Add(LoadStringResource(IDS_REPORT_VIEW)...
[truncated message content] |
|
From: <got...@us...> - 2008-12-27 17:25:59
|
Revision: 139
http://scstudio.svn.sourceforge.net/scstudio/?rev=139&view=rev
Author: gotthardp
Date: 2008-12-27 17:25:52 +0000 (Sat, 27 Dec 2008)
Log Message:
-----------
Implemented
- template for scstudio-controlled drawings
- stencils for basic MSC and HMSC (inspired by previous work of Jiri Zapletal and Zdenek Chromy)
- extraction of basic MSC drawing to a msc.h structure
- basic installer (based on NSIS)
Next step: conversion of HMSC drawings.
Modified Paths:
--------------
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/errors.h
trunk/src/view/visio/addon/extract.cpp
trunk/src/view/visio/addon/extract.h
trunk/src/view/visio/addon/reportview.cpp
trunk/src/view/visio/addon/reportview.h
trunk/src/view/visio/addon/scstudio.vcproj
Added Paths:
-----------
trunk/src/view/visio/scstudio.nsi
trunk/src/view/visio/stencils/Sequence Chart Studio/
trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx
trunk/src/view/visio/stencils/Sequence Chart Studio/HMSC.vsx
trunk/src/view/visio/stencils/Sequence Chart Studio/MSC-logo.vtx
trunk/src/view/visio/stencils/Sequence Chart Studio/MSC.vtx
Removed Paths:
-------------
trunk/src/view/visio/stencils/HMSC.vss
trunk/src/view/visio/stencils/bMSC.vss
trunk/src/view/visio/stencils/stencils.nsi
Modified: trunk/src/view/visio/addon/addon.cpp
===================================================================
--- trunk/src/view/visio/addon/addon.cpp 2008-12-27 12:45:35 UTC (rev 138)
+++ trunk/src/view/visio/addon/addon.cpp 2008-12-27 17:25:52 UTC (rev 139)
@@ -248,7 +248,7 @@
case 2: // DocumentOpen
return VAORC_SUCCESS;
- // to keep the stencil compatibility, the 1xx events must not be renumbered
+ // note: to keep stencil compatibility, the 1xx events must not be renumbered
case 100:
TRACE("CStudioAddon::Run() stencil event 'OnDrop'");
return VAORC_SUCCESS;
@@ -268,6 +268,7 @@
}
catch (_com_error &err)
{
+ _bstr_t message = err.Description();
DisplayException(vsoApp, err.ErrorMessage(), MB_OK);
}
@@ -437,7 +438,7 @@
// Create a monitor class to keep track of this document and the Events
// being monitored for this document.
- pDocumentMonitor = new CDocumentMonitor(this, vsoDocument);
+ pDocumentMonitor = new CDocumentMonitor(this, vsoApp, vsoDocument);
pDocumentMonitor->InitMenu(vsoApp);
// register PageAdded
Modified: trunk/src/view/visio/addon/document.cpp
===================================================================
--- trunk/src/view/visio/addon/document.cpp 2008-12-27 12:45:35 UTC (rev 138)
+++ trunk/src/view/visio/addon/document.cpp 2008-12-27 17:25:52 UTC (rev 139)
@@ -20,13 +20,16 @@
#include "dllmodule.h"
#include "addon.h"
#include "document.h"
+#include "errors.h"
#include "extract.h"
#include "data/msc.h"
-CDocumentMonitor::CDocumentMonitor(CStudioAddon *addon, Visio::IVDocumentPtr vsoDocument)
+CDocumentMonitor::CDocumentMonitor(CStudioAddon *addon,
+ Visio::IVApplicationPtr vsoApp, Visio::IVDocumentPtr vsoDocument)
{
m_addon = addon;
+ m_vsoApp = vsoApp;
m_vsoDocument = vsoDocument;
m_reportVisible = false;
@@ -96,21 +99,21 @@
TDrawingType type = get_drawing_type(m_reportView, vsoPage);
if(type == DT_BMSC)
{
- m_reportView->Print("Detected bMSC drawing.");
+ BMscPtr bmsc = extract_bmsc(m_reportView, vsoPage);
- BMscPtr bmsc = extract_bmsc(m_reportView, vsoPage);
+ m_reportView->Print(RS_NOTICE, "No error detected.");
return VAORC_SUCCESS;
}
else if(type == DT_HMSC)
{
- m_reportView->Print("Detected hMSC drawing.");
-
- BMscPtr hmsc = extract_hmsc(m_reportView, vsoPage);
+ HMscPtr hmsc = extract_hmsc(m_reportView, vsoPage);
return VAORC_SUCCESS;
}
else
{
- m_reportView->Print("\\b This drawing is neither bMSC nor hMSC.\\b0");
+ m_reportView->Print(RS_ERROR, stringize()
+ << "Drawing '" << vsoPage->Name << "' is neither basic MSC nor HMSC.");
+
return VAORC_FAILURE;
}
}
@@ -160,4 +163,33 @@
m_reportVisible = false;
}
+int CDocumentMonitor::SelectShape(const _bstr_t& id)
+{
+ for(int i = 1; i <= m_vsoDocument->Pages->Count; i++)
+ {
+ Visio::IVPagePtr page = m_vsoDocument->Pages->Item[i];
+
+ // check if the shape "id" is on this page
+ // the page->Shapes->Item[id] cannot be used as it throws an exception
+ for(int j = 1; j <= page->Shapes->Count; j++)
+ {
+ Visio::IVShapePtr shape = page->Shapes->Item[j];
+
+ if(shape->UniqueID[visGetGUID] == id)
+ {
+ Visio::IVSelectionPtr selection =
+ page->CreateSelection(Visio::visSelTypeSingle, Visio::visSelModeSkipSuper, (IDispatch *)shape);
+
+ m_vsoApp->ActiveWindow->Page = (IDispatch *)page;
+ m_vsoApp->ActiveWindow->Selection = selection;
+ return 0;
+ }
+ }
+ }
+
+ // the shape was probably deleted by user
+ TRACE("CDocumentMonitor::SelectShape() shape " << id << " not found");
+ return -1;
+}
+
// $Id$
Modified: trunk/src/view/visio/addon/document.h
===================================================================
--- trunk/src/view/visio/addon/document.h 2008-12-27 12:45:35 UTC (rev 138)
+++ trunk/src/view/visio/addon/document.h 2008-12-27 17:25:52 UTC (rev 139)
@@ -24,7 +24,8 @@
class CDocumentMonitor
{
public:
- CDocumentMonitor(CStudioAddon *addon, Visio::IVDocumentPtr vsoDocument);
+ CDocumentMonitor(CStudioAddon *addon,
+ Visio::IVApplicationPtr vsoApp, Visio::IVDocumentPtr vsoDocument);
virtual ~CDocumentMonitor();
void InitMenu(Visio::IVApplicationPtr vsoApp);
@@ -35,6 +36,8 @@
void ShowReportView(Visio::IVApplicationPtr vsoApp);
void OnHideReportView();
+ int SelectShape(const _bstr_t& id);
+
// event objects for this document
Visio::IVEventPtr m_vsoPageAddedEvent;
Visio::IVEventPtr m_vsoBeforeDocumentClosedEvent;
@@ -43,6 +46,7 @@
CDocumentMonitor(const CDocumentMonitor &other); // not implemented
CStudioAddon *m_addon;
+ Visio::IVApplicationPtr m_vsoApp;
Visio::IVDocumentPtr m_vsoDocument;
bool m_reportVisible;
Modified: trunk/src/view/visio/addon/errors.h
===================================================================
--- trunk/src/view/visio/addon/errors.h 2008-12-27 12:45:35 UTC (rev 138)
+++ trunk/src/view/visio/addon/errors.h 2008-12-27 17:25:52 UTC (rev 139)
@@ -24,7 +24,7 @@
#define TRACE(message) \
{ \
std::basic_stringstream<TCHAR> buffer; \
- buffer << __FILE__ << ":" << __LINE__ << " " << message << std::endl; \
+ buffer << __FILE__ << "(" << __LINE__ << "): " << message << std::endl; \
OutputDebugString(buffer.str().c_str()); \
}
#else
Modified: trunk/src/view/visio/addon/extract.cpp
===================================================================
--- trunk/src/view/visio/addon/extract.cpp 2008-12-27 12:45:35 UTC (rev 138)
+++ trunk/src/view/visio/addon/extract.cpp 2008-12-27 17:25:52 UTC (rev 139)
@@ -18,50 +18,333 @@
#include "stdafx.h"
#include "extract.h"
+#include "errors.h"
+#include <Visconst.h>
+
+TShapeType get_shape_type(Visio::IVShapePtr shape)
+{
+ // walk though all user-defined cells
+ // note: rows are numbered starting with 0
+ for(int i = 0; i < shape->RowCount[visSectionUser]; i++)
+ {
+ Visio::IVCellPtr cell = shape->CellsSRC[visSectionUser][visRowUser+i][visUserValue];
+ if(cell == NULL)
+ continue;
+
+ // note: to keep stencil compatibility, the names must not be changed
+ struct SymbolsStruct {
+ TCHAR *name;
+ TShapeType type;
+ } symbols[] = {
+ {_T("bmsc.instance.line"), ST_BMSC_INSTANCE},
+ {_T("bmsc.message"), ST_BMSC_MESSAGE},
+ {_T("bmsc.message.lost"), ST_BMSC_MESSAGE_LOST},
+ {_T("bmsc.message.found"), ST_BMSC_MESSAGE_FOUND},
+ {_T("comment"), ST_COMMENT},
+ {_T("text"), ST_TEXT},
+ {_T("hmsc.connection"), ST_HMSC_CONNECTION},
+ {_T("hmsc.start"), ST_HMSC_START},
+ {_T("hmsc.end"), ST_HMSC_END},
+ {_T("hmsc.reference"), ST_HMSC_REFERENCE},
+ {NULL, ST_UNKNOWN}
+ };
+
+ if(_tcscmp(cell->RowName, _T("mscSymbol")) == 0)
+ {
+ _bstr_t symbol_name = cell->ResultStr[visNoCast];
+
+ for(SymbolsStruct *pos = symbols; pos->name != NULL; pos++)
+ {
+ if(_tcscmp(symbol_name, pos->name) == 0)
+ return pos->type;
+ }
+
+ // shape with unknown mscSymbol
+ TRACE("get_shape_type() found unknown mscSymbol '" << symbol_name << "'");
+ return ST_UNKNOWN;
+ }
+ }
+
+ // shape without mscSymbol
+ return ST_UNKNOWN;
+}
+
TDrawingType get_drawing_type(CReportView *reporter, Visio::IVPagePtr vsoPage)
{
+ Visio::IVShapesPtr vsoShapes = vsoPage->Shapes;
+
+ // walk through all shapes in the drawing
+ for(int i = 1; i <= vsoShapes->GetCount(); i++)
+ {
+ TShapeType type = get_shape_type(vsoShapes->Item[i]);
+ switch(type)
+ {
+ case ST_BMSC_INSTANCE:
+ case ST_BMSC_MESSAGE:
+ case ST_BMSC_MESSAGE_LOST:
+ case ST_BMSC_MESSAGE_FOUND:
+ TRACE("get_drawing_type() detected bMSC");
+ return DT_BMSC;
+
+ case ST_HMSC_CONNECTION:
+ case ST_HMSC_START:
+ case ST_HMSC_END:
+ case ST_HMSC_REFERENCE:
+ TRACE("get_drawing_type() detected HMSC");
+ return DT_HMSC;
+
+ default:
+ break;
+ }
+ }
+
+ TRACE("get_drawing_type() unknown drawing type");
return DT_UNKNOWN;
}
+struct SStrictOrder
+{
+ double event_time;
+ enum {
+ ET_INCOMING,
+ ET_OUTGOING
+ } event_type;
+
+ long shape_id;
+ TShapeType shape_type;
+
+ bool operator < (const SStrictOrder& s2) const
+ {
+ // old event < new event, incoming event < outgoing event
+ return event_time < s2.event_time ||
+ (event_time == s2.event_time && event_type < s2.event_type);
+ }
+};
+
BMscPtr extract_bmsc(CReportView *reporter, Visio::IVPagePtr vsoPage)
{
BMscPtr bmsc = new BMsc();
- Visio::IVShapesPtr vsoShapes = vsoPage->GetShapes();
-
- long cnt = vsoShapes->GetCount();
+ // temporary mappers Visio shape-id --> msc.h
+ std::map<long,InstancePtr> instances;
+ std::map<long,MscMessagePtr> messages;
- if (cnt > 0) {
- Visio::IVShapePtr shape;
- std::string s;
+ // first walk through all shapes: create objects
+ for(int i = 1; i <= vsoPage->Shapes->GetCount(); i++)
+ {
+ Visio::IVShapePtr shape = vsoPage->Shapes->Item[i];
- for (long i = 1; i < cnt; i++) {
- shape = vsoShapes->GetItem(i);
-
- s.erase();
- s.append("Shape: ");
- s.append(shape->GetName());
- s.append("/");
- s.append(shape->GetNameU());
+ TShapeType type = get_shape_type(shape);
+ switch(type)
+ {
+ case ST_BMSC_INSTANCE:
+ instances[shape->ID] = new Instance((const char*)shape->Text);
+ break;
- reporter->Print(s);
- }
- } else {
- reporter->Print("No Shapes detected");
+ case ST_BMSC_MESSAGE:
+ messages[shape->ID] = new CompleteMessage((const char*)shape->Text);
+ break;
+ case ST_BMSC_MESSAGE_LOST:
+ messages[shape->ID] = new IncompleteMessage(LOST, (const char*)shape->Text);
+ break;
+ case ST_BMSC_MESSAGE_FOUND:
+ messages[shape->ID] = new IncompleteMessage(FOUND, (const char*)shape->Text);
+ break;
+
+ case ST_COMMENT:
+ case ST_TEXT:
+ // ignore text and comments
+ break;
+
+ case ST_HMSC_CONNECTION:
+ case ST_HMSC_START:
+ case ST_HMSC_END:
+ case ST_HMSC_REFERENCE:
+ reporter->Print(RS_ERROR, stringize()
+ << "HMSC symbol '" << shape->Name << "' not allowed in basic MSC drawing.", shape);
+ break;
+
+ case ST_UNKNOWN:
+ default:
+ reporter->Print(RS_WARNING, stringize()
+ << "Ignored a strange symbol '" << shape->Name << "'", shape);
+ break;
+ }
}
-
- reporter->Print("\\b No error detected.\\b0");
+ // walk though all detected instances: create connections
+ for(std::map<long,InstancePtr>::iterator ipos = instances.begin();
+ ipos != instances.end(); ipos++)
+ {
+ Visio::IVShapePtr instance = vsoPage->Shapes->ItemFromID[ipos->first];
+
+ // connect instance to the bMSC
+ bmsc->add_instance(ipos->second);
+ // create strict order area
+ EventAreaPtr area = new StrictOrderArea();
+ ipos->second->add_area(area);
+
+ std::set<SStrictOrder> events;
+ // random walk through all connectors from others
+ for(int i = 1; i <= instance->FromConnects->GetCount(); i++)
+ {
+ Visio::IVConnectPtr connect = instance->FromConnects->Item[i];
+ // position of respective connection point
+ short cellrow = connect->ToCell->Row;
+ Visio::IVCellPtr posx = instance->CellsSRC[visSectionConnectionPts][cellrow][visX];
+
+ // shape connected to this instance
+ Visio::IVShapePtr shape = connect->FromSheet;
+
+ SStrictOrder event;
+ event.shape_id = shape->ID;
+ event.shape_type = get_shape_type(shape);
+
+ event.event_time = posx->Result[visDrawingUnits];
+
+ // which shape is connected?
+ switch(event.shape_type)
+ {
+ case ST_BMSC_MESSAGE:
+ // which side of the message is connected?
+ switch(connect->FromPart)
+ {
+ case visBegin:
+ event.event_type = SStrictOrder::ET_OUTGOING;
+ break;
+ case visEnd:
+ event.event_type = SStrictOrder::ET_INCOMING;
+ break;
+
+ default:
+ reporter->Print(RS_ERROR, stringize()
+ << "Wrongly connected message '" << shape->Name << "'", shape);
+ continue;
+ }
+ break;
+
+ case ST_BMSC_MESSAGE_LOST:
+ switch(connect->FromPart)
+ {
+ case visBegin:
+ event.event_type = SStrictOrder::ET_OUTGOING;
+ break;
+
+ default:
+ reporter->Print(RS_ERROR, stringize()
+ << "Wrongly connected message '" << shape->Name << "'", shape);
+ continue;
+ }
+ break;
+
+ case ST_BMSC_MESSAGE_FOUND:
+ switch(connect->FromPart)
+ {
+ case visEnd:
+ event.event_type = SStrictOrder::ET_INCOMING;
+ break;
+
+ default:
+ reporter->Print(RS_ERROR, stringize()
+ << "Wrongly connected message '" << shape->Name << "'", shape);
+ continue;
+ }
+ break;
+
+ case ST_COMMENT:
+ // ignore comments
+ continue;
+
+ default:
+ reporter->Print(RS_WARNING, stringize()
+ << "Ignored a connection to unknown symbol '" << shape->Name << "'", shape);
+ continue;
+ }
+
+ std::pair<std::set<SStrictOrder>::iterator, bool> result = events.insert(event);
+ if(!result.second)
+ {
+ reporter->Print(RS_ERROR, stringize()
+ << "Multiple events cannot be attached to one point.", shape);
+ }
+ }
+
+ // walk though the events in a time-order
+ for(std::set<SStrictOrder>::iterator epos = events.begin();
+ epos != events.end(); epos++)
+ {
+ switch(epos->shape_type)
+ {
+ case ST_BMSC_MESSAGE:
+ {
+ std::map<long,MscMessagePtr>::iterator mpos = messages.find(epos->shape_id);
+ if(mpos == messages.end())
+ continue;
+
+ CompleteMessagePtr message =
+ boost::dynamic_pointer_cast<CompleteMessage>(mpos->second);
+ if(message == NULL)
+ continue;
+
+ EventPtr event = area->add_event();
+ switch(epos->event_type)
+ {
+ case SStrictOrder::ET_OUTGOING:
+ message->glue_send_event(event);
+ break;
+ case SStrictOrder::ET_INCOMING:
+ message->glue_receive_event(event);
+ break;
+ }
+
+ break;
+ }
+
+ case ST_BMSC_MESSAGE_LOST:
+ case ST_BMSC_MESSAGE_FOUND:
+ {
+ std::map<long,MscMessagePtr>::iterator mpos = messages.find(epos->shape_id);
+ if(mpos == messages.end())
+ continue;
+
+ IncompleteMessagePtr message =
+ boost::dynamic_pointer_cast<IncompleteMessage>(mpos->second);
+ if(message == NULL)
+ continue;
+
+ EventPtr event = area->add_event();
+ message->glue_event(event);
+
+ break;
+ }
+ }
+ }
+ }
+
+ // walk through detected messages: check all messages are connected
+ for(std::map<long,MscMessagePtr>::const_iterator mpos = messages.begin();
+ mpos != messages.end(); mpos++)
+ {
+ Visio::IVShapePtr shape = vsoPage->Shapes->ItemFromID[mpos->first];
+
+ if(!mpos->second->is_glued())
+ {
+ reporter->Print(RS_ERROR, stringize()
+ << "Disconnected message '" << shape->Name << "'", shape);
+ }
+ }
+
+ reporter->Print(RS_NORMAL, stringize()
+ << "Drawing '" << vsoPage->Name << "' converted to basic MSC.");
return bmsc;
-
- return (BMsc *)NULL;
}
HMscPtr extract_hmsc(CReportView *reporter, Visio::IVPagePtr vsoPage)
{
HMscPtr hmsc = new HMsc();
+ reporter->Print(RS_NORMAL, "Drawing converted to HMSC.");
return hmsc;
return (HMsc *)NULL;
Modified: trunk/src/view/visio/addon/extract.h
===================================================================
--- trunk/src/view/visio/addon/extract.h 2008-12-27 12:45:35 UTC (rev 138)
+++ trunk/src/view/visio/addon/extract.h 2008-12-27 17:25:52 UTC (rev 139)
@@ -19,14 +19,31 @@
#pragma once
#include "reportview.h"
-#include "Vaddon.h"
+#include <Vaddon.h>
#include "data/msc.h"
+enum TShapeType
+{
+ ST_BMSC_INSTANCE,
+ ST_BMSC_MESSAGE,
+ ST_BMSC_MESSAGE_LOST,
+ ST_BMSC_MESSAGE_FOUND,
+ ST_COMMENT,
+ ST_TEXT,
+ ST_HMSC_CONNECTION,
+ ST_HMSC_START,
+ ST_HMSC_END,
+ ST_HMSC_REFERENCE,
+ ST_UNKNOWN
+};
+
+TShapeType get_shape_type(Visio::IVShapePtr shape);
+
enum TDrawingType
{
DT_UNKNOWN = 0,
- DT_BMSC,
- DT_HMSC
+ DT_BMSC = 1,
+ DT_HMSC = 2
};
TDrawingType get_drawing_type(CReportView *reporter, Visio::IVPagePtr vsoPage);
Modified: trunk/src/view/visio/addon/reportview.cpp
===================================================================
--- trunk/src/view/visio/addon/reportview.cpp 2008-12-27 12:45:35 UTC (rev 138)
+++ trunk/src/view/visio/addon/reportview.cpp 2008-12-27 17:25:52 UTC (rev 139)
@@ -20,8 +20,9 @@
#include "document.h"
#include "reportview.h"
#include "errors.h"
-#include <sstream>
+#include <Visconst.h>
+
CReportView::CReportView(CDocumentMonitor *monitor)
{
m_documentMonitor = monitor;
@@ -46,7 +47,7 @@
return 0;
}
-int CReportView::Print(const std::string& message)
+int CReportView::Print(TSeverity severity, const std::string& message, Visio::IVShapePtr shape)
{
static const char *rtfPrefix =
"{\\rtf1\\ansi"
@@ -55,16 +56,31 @@
static const char *rtfSuffix =
"}";
- // "\\cf1Red\\cf0"
- // "\\i Italics\\i0"
+ long pos = GetWindowTextLength();
+ // put caret after the last character
+ SetSel(pos, pos);
- std::stringstream rtfStream;
- rtfStream
- << rtfPrefix
- << message << "\\line"
- << rtfSuffix;
+ std::string sstr = rtfPrefix;
+ // depending on severity, change the text style
+ switch(severity)
+ {
+ case RS_NORMAL:
+ default:
+ sstr += message;
+ break;
+ case RS_NOTICE:
+ sstr += "\\b " + message + "\\b0";
+ break;
+ case RS_WARNING:
+ sstr += "\\cf1Warning: " + message + "\\cf0";
+ break;
+ case RS_ERROR:
+ sstr += "\\cf1\\b Error: " + message + "\\b0\\cf0";
+ break;
+ }
+ sstr += "\\line";
+ sstr += rtfSuffix;
- std::string sstr = rtfStream.str();
const char *pstr = sstr.c_str();
EDITSTREAM es = {(DWORD)&pstr, 0, EditStreamCallBack};
@@ -73,12 +89,26 @@
LineScroll(1);
+ _bstr_t reference;
+ if(shape != NULL)
+ reference = shape->UniqueID[visGetOrMakeGUID];
+
+ m_references.push_back(reference);
+
return 0;
}
LRESULT CReportView::OnLButtonDblClk(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
- TRACE("CReportView::OnLButtonDblClk() called");
+ POINT pos = { LOWORD(lParam), HIWORD(lParam) };
+ // convert pixel position [x,y] to a character position
+ int ch = CharFromPos(pos);
+ int line = LineFromChar(ch);
+
+ TRACE("CReportView::OnLButtonDblClk() called at line " << line);
+
+ if (m_references[line].length() > 0)
+ m_documentMonitor->SelectShape(m_references[line]);
return 1;
}
@@ -86,6 +116,7 @@
{
TRACE("CReportView::OnFinalMessage() called");
+ m_references.clear();
m_documentMonitor->OnHideReportView();
}
Modified: trunk/src/view/visio/addon/reportview.h
===================================================================
--- trunk/src/view/visio/addon/reportview.h 2008-12-27 12:45:35 UTC (rev 138)
+++ trunk/src/view/visio/addon/reportview.h 2008-12-27 17:25:52 UTC (rev 139)
@@ -24,17 +24,50 @@
// http://wtl.sourceforge.net
#include <atlctrls.h>
-#include <string>
+#include <sstream>
+#include <vector>
class CDocumentMonitor;
+//! Helper class to construct a message for CReportView::Print()
+/*!
+ * reporter->Print(stringize() << "string" << number);
+ */
+struct stringize
+{
+ template< typename T >
+ stringize & operator << (T const& t)
+ {
+ m_s << t;
+ return *this;
+ }
+
+ // note: must not return reference
+ operator std::string() const
+ {
+ return m_s.str();
+ }
+
+private:
+ std::stringstream m_s;
+};
+
+enum TSeverity
+{
+ RS_NORMAL, //! black
+ RS_NOTICE, //! black bold
+ RS_WARNING, //! red
+ RS_ERROR //! red bold
+};
+
class CReportView
: public ATL::CWindowImpl<CReportView, CRichEditCtrl, ATL::CControlWinTraits>
{
public:
CReportView(CDocumentMonitor *monitor);
- int Print(const std::string& message);
+ int Print(TSeverity severity, const std::string& message, Visio::IVShapePtr shape = NULL);
+
protected:
BEGIN_MSG_MAP(CReportView)
MESSAGE_HANDLER(WM_LBUTTONDBLCLK, OnLButtonDblClk)
@@ -50,6 +83,9 @@
private:
CDocumentMonitor *m_documentMonitor;
+
+ // UniqueID's of shapes referenced by lines in this report
+ std::vector<_bstr_t> m_references;
};
// $Id$
Modified: trunk/src/view/visio/addon/scstudio.vcproj
===================================================================
--- trunk/src/view/visio/addon/scstudio.vcproj 2008-12-27 12:45:35 UTC (rev 138)
+++ trunk/src/view/visio/addon/scstudio.vcproj 2008-12-27 17:25:52 UTC (rev 139)
@@ -22,7 +22,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\src;"C:\Program Files\Microsoft Office\Visio11\SDK\Libraries\CPP\Include";"C:\Program Files\Microsoft Office\Visio11\SDK\Libraries\CPP\Source";"C:\Program Files\Microsoft Office\Visio11\SDK\Libraries\TypeLib";"C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\WTL80\include""
+ AdditionalIncludeDirectories="..\..\..\..\src;"$(BOOSTROOT)";"C:\Program Files\Microsoft Office\Visio11\SDK\Libraries\CPP\Include";"C:\Program Files\Microsoft Office\Visio11\SDK\Libraries\CPP\Source";"C:\Program Files\Microsoft Office\Visio11\SDK\Libraries\TypeLib";"C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\WTL80\include""
PreprocessorDefinitions="WIN32;_WIN32_WINNT=0x0500;_WINDOWS;_DEBUG;_USRDLL"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
@@ -95,7 +95,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="2"
- AdditionalIncludeDirectories="..\..\..\..\src;"C:\Program Files\Microsoft Office\Visio11\SDK\Libraries\CPP\Include";"C:\Program Files\Microsoft Office\Visio11\SDK\Libraries\CPP\Source";"C:\Program Files\Microsoft Office\Visio11\SDK\Libraries\TypeLib";"C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\WTL80\include""
+ AdditionalIncludeDirectories="..\..\..\..\src;"$(BOOSTROOT)";"C:\Program Files\Microsoft Office\Visio11\SDK\Libraries\CPP\Include";"C:\Program Files\Microsoft Office\Visio11\SDK\Libraries\CPP\Source";"C:\Program Files\Microsoft Office\Visio11\SDK\Libraries\TypeLib";"C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\WTL80\include""
PreprocessorDefinitions="WIN32;_WIN32_WINNT=0x0500;_WINDOWS;NDEBUG;_USRDLL"
RuntimeLibrary="2"
RuntimeTypeInfo="TRUE"
Copied: trunk/src/view/visio/scstudio.nsi (from rev 138, trunk/src/view/visio/stencils/stencils.nsi)
===================================================================
--- trunk/src/view/visio/scstudio.nsi (rev 0)
+++ trunk/src/view/visio/scstudio.nsi 2008-12-27 17:25:52 UTC (rev 139)
@@ -0,0 +1,179 @@
+; scstudio - Sequence Chart Studio
+; http://scstudio.sourceforge.net
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License version 2.1, as published by the Free Software Foundation.
+;
+; This library 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
+; Lesser General Public License for more details.
+;
+; Copyright (c) 2008 Petr Gotthard <pet...@ce...>
+;
+; $Id$
+
+; compile this file using NSIS from http://nsis.sourceforge.net
+; e.g. "C:\Program Files\NSIS\makensis" scstudio.nsi
+
+!include 'MUI2.nsh'
+
+; -- General ---------------------------
+
+Name "Sequence Chart Studio"
+OutFile "scstudio-setup.exe"
+
+InstallDir "$PROGRAMFILES\Sequence Chart Studio"
+
+RequestExecutionLevel user
+
+; -- Pages -----------------------------
+
+!insertmacro MUI_PAGE_WELCOME
+!insertmacro MUI_PAGE_LICENSE "..\..\..\COPYING"
+!insertmacro MUI_PAGE_COMPONENTS
+!insertmacro MUI_PAGE_DIRECTORY
+!insertmacro MUI_PAGE_INSTFILES
+!insertmacro MUI_PAGE_FINISH
+
+!insertmacro MUI_UNPAGE_WELCOME
+!insertmacro MUI_UNPAGE_CONFIRM
+!insertmacro MUI_UNPAGE_INSTFILES
+!insertmacro MUI_UNPAGE_FINISH
+
+; -- Languages -------------------------
+
+!insertmacro MUI_LANGUAGE "English"
+
+; -- Installer Sections ----------------
+
+!define StrStr "!insertmacro StrStr"
+!define AppendRegStr "!insertmacro AppendRegStr"
+
+!macro StrStr ResultVar String SubString
+ Push `${String}`
+ Push `${SubString}`
+ Call StrStr
+ Pop `${ResultVar}`
+!macroend
+
+; appends ${value} to HKCU registry ${key}, if not already included
+!macro AppendRegStr key name value
+ ReadRegStr $0 HKCU ${key} ${name}
+ ; check if the value already included in the path-list
+ ${StrStr} $1 $0 ${value}
+ ; if no, write value to registry
+ ${If} $1 == ""
+ ; check if some other path is already in the path-list
+ ${If} $0 != ""
+ ; if yes, append our value to the list
+ StrCpy $2 "$0;${value}"
+ ${Else}
+ StrCpy $2 "${value}"
+ ${Endif}
+ WriteRegStr HKCU ${key} ${name} $2
+ ${EndIf}
+!macroend
+
+Section "Microsoft Visio Add-On" SecAddon
+ !define VisioRegPath "Software\Microsoft\Office\11.0\Visio\Application"
+
+ SetOutPath $INSTDIR\bin
+ File "addon\Debug\scstudio.vsl"
+ File "..\..\..\Debug\*.dll"
+
+ ${AppendRegStr} ${VisioRegPath} "AddonsPath" "$INSTDIR\bin"
+
+ SetOutPath "$INSTDIR\stencils\Sequence Chart Studio"
+ File "stencils\Sequence Chart Studio\Basic MSC.vsx"
+ File "stencils\Sequence Chart Studio\HMSC.vsx"
+ File "stencils\Sequence Chart Studio\MSC.vtx"
+
+ ${AppendRegStr} ${VisioRegPath} "StencilPath" "$INSTDIR\stencils"
+ ${AppendRegStr} ${VisioRegPath} "TemplatePath" "$INSTDIR\stencils"
+
+ ;Create uninstaller
+ WriteUninstaller "$INSTDIR\Uninstall.exe"
+SectionEnd
+
+LangString DESC_SecAddon ${LANG_ENGLISH} "Installs Microsoft Visio Add-on and related stencils and templates."
+
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecAddon} $(DESC_SecAddon)
+!insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+; -- Uninstaller Section ---------------
+
+Section "Uninstall"
+ RMDir /r "$INSTDIR\bin"
+ RMDir /r "$INSTDIR\stencils\Sequence Chart Studio"
+ RMDir "$INSTDIR\stencils"
+
+ ; FIXME: the registry entries need to be removed
+
+ Delete "$INSTDIR\Uninstall.exe"
+
+ RMDir "$INSTDIR"
+SectionEnd
+
+; -- Functions -------------------------
+
+; StrStr $0 "String" "SubString"
+; http://nsis.sourceforge.net/StrStr
+
+Function StrStr
+/*After this point:
+ ------------------------------------------
+ $R0 = SubString (input)
+ $R1 = String (input)
+ $R2 = SubStringLen (temp)
+ $R3 = StrLen (temp)
+ $R4 = StartCharPos (temp)
+ $R5 = TempStr (temp)*/
+
+ ;Get input from user
+ Exch $R0
+ Exch
+ Exch $R1
+ Push $R2
+ Push $R3
+ Push $R4
+ Push $R5
+
+ ;Get "String" and "SubString" length
+ StrLen $R2 $R0
+ StrLen $R3 $R1
+ ;Start "StartCharPos" counter
+ StrCpy $R4 0
+
+ ;Loop until "SubString" is found or "String" reaches its end
+ ${Do}
+ ;Remove everything before and after the searched part ("TempStr")
+ StrCpy $R5 $R1 $R2 $R4
+
+ ;Compare "TempStr" with "SubString"
+ ${IfThen} $R5 == $R0 ${|} ${ExitDo} ${|}
+ ;If not "SubString", this could be "String"'s end
+ ${IfThen} $R4 >= $R3 ${|} ${ExitDo} ${|}
+ ;If not, continue the loop
+ IntOp $R4 $R4 + 1
+ ${Loop}
+
+/*After this point:
+ ------------------------------------------
+ $R0 = ResultVar (output)*/
+
+ ;Remove part before "SubString" on "String" (if there has one)
+ StrCpy $R0 $R1 `` $R4
+
+ ;Return output to user
+ Pop $R5
+ Pop $R4
+ Pop $R3
+ Pop $R2
+ Pop $R1
+ Exch $R0
+FunctionEnd
+
+; $Id$
Property changes on: trunk/src/view/visio/scstudio.nsi
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Deleted: trunk/src/view/visio/stencils/HMSC.vss
===================================================================
(Binary files di...
[truncated message content] |
|
From: <got...@us...> - 2008-12-30 18:06:33
|
Revision: 143
http://scstudio.svn.sourceforge.net/scstudio/?rev=143&view=rev
Author: gotthardp
Date: 2008-12-30 18:06:26 +0000 (Tue, 30 Dec 2008)
Log Message:
-----------
Implemented extraction of HMSC drawing to a msc.h structure. Next step: coregions.
Modified Paths:
--------------
trunk/src/view/visio/addon/addon.h
trunk/src/view/visio/addon/document.cpp
trunk/src/view/visio/addon/document.h
trunk/src/view/visio/addon/extract.cpp
trunk/src/view/visio/addon/extract.h
trunk/src/view/visio/addon/reportview.cpp
trunk/src/view/visio/addon/reportview.h
trunk/src/view/visio/addon/scstudio.vcproj
trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx
trunk/src/view/visio/stencils/Sequence Chart Studio/HMSC.vsx
trunk/src/view/visio/stencils/Sequence Chart Studio/MSC.vtx
Added Paths:
-----------
trunk/src/view/visio/addon/fcmp.cpp
trunk/src/view/visio/addon/fcmp.h
Modified: trunk/src/view/visio/addon/addon.h
===================================================================
--- trunk/src/view/visio/addon/addon.h 2008-12-29 15:49:54 UTC (rev 142)
+++ trunk/src/view/visio/addon/addon.h 2008-12-30 18:06:26 UTC (rev 143)
@@ -18,8 +18,8 @@
#pragma once
-#include "Vaddon.h"
-#include "AddSink.h"
+#include <Vaddon.h>
+#include <Visiwrap.h>
#include <map>
Modified: trunk/src/view/visio/addon/document.cpp
===================================================================
--- trunk/src/view/visio/addon/document.cpp 2008-12-29 15:49:54 UTC (rev 142)
+++ trunk/src/view/visio/addon/document.cpp 2008-12-30 18:06:26 UTC (rev 143)
@@ -94,26 +94,36 @@
if(!m_reportVisible)
ShowReportView(vsoApp);
+ // clear the verification report
+ m_reportView->Reset();
+
+ CDrawingExtractor extractor(m_reportView);
Visio::IVPagePtr vsoPage = vsoApp->GetActivePage();
- TDrawingType type = get_drawing_type(m_reportView, vsoPage);
- if(type == DT_BMSC)
+ MscPtr msc = extractor.extract_msc(vsoPage);
+ if(msc != NULL)
{
- BMscPtr bmsc = extract_bmsc(m_reportView, vsoPage);
+ BMscPtr bmsc = boost::dynamic_pointer_cast<BMsc>(msc);
+ if(bmsc != NULL)
+ {
+ m_reportView->Print(RS_NOTICE, "No error detected.");
+ return VAORC_SUCCESS;
+ }
- m_reportView->Print(RS_NOTICE, "No error detected.");
- return VAORC_SUCCESS;
+ HMscPtr hmsc = boost::dynamic_pointer_cast<HMsc>(msc);
+ if(hmsc != NULL)
+ {
+ m_reportView->Print(RS_NOTICE, "No error detected.");
+ return VAORC_SUCCESS;
+ }
+
+ // something strange have happened
+ return VAORC_FAILURE;
}
- else if(type == DT_HMSC)
- {
- HMscPtr hmsc = extract_hmsc(m_reportView, vsoPage);
- return VAORC_SUCCESS;
- }
else
{
- m_reportView->Print(RS_ERROR, stringize()
- << "Drawing '" << vsoPage->Name << "' is neither basic MSC nor HMSC.");
-
+ m_reportView->Print(RS_NOTICE,
+ stringize() << "Graphical error(s) in drawing '" << vsoPage->Name << "'");
return VAORC_FAILURE;
}
}
@@ -163,7 +173,7 @@
m_reportVisible = false;
}
-int CDocumentMonitor::SelectShape(const _bstr_t& id)
+Visio::IVShapePtr CDocumentMonitor::FindShape(const _bstr_t& id)
{
for(int i = 1; i <= m_vsoDocument->Pages->Count; i++)
{
@@ -176,20 +186,53 @@
Visio::IVShapePtr shape = page->Shapes->Item[j];
if(shape->UniqueID[visGetGUID] == id)
- {
- Visio::IVSelectionPtr selection =
- page->CreateSelection(Visio::visSelTypeSingle, Visio::visSelModeSkipSuper, (IDispatch *)shape);
-
- m_vsoApp->ActiveWindow->Page = (IDispatch *)page;
- m_vsoApp->ActiveWindow->Selection = selection;
- return 0;
- }
+ return shape;
}
}
// the shape was probably deleted by user
- TRACE("CDocumentMonitor::SelectShape() shape " << id << " not found");
- return -1;
+ TRACE("CDocumentMonitor::FindShape() shape " << id << " not found");
+ return NULL;
}
+int CDocumentMonitor::SelectShapes(const std::vector<_bstr_t>& ids)
+{
+ std::vector<Visio::IVShapePtr> shapes;
+ // find referenced shaped
+ // note: some of the shapes may have been deleted by user
+ for(std::vector<_bstr_t>::const_iterator ipos = ids.begin();
+ ipos != ids.end(); ipos++)
+ {
+ Visio::IVShapePtr shape = FindShape(*ipos);
+ if(shape != NULL)
+ shapes.push_back(shape);
+ }
+
+ // is there something to select?
+ if(shapes.size() > 0)
+ {
+ // the selected shapes must be on a single page
+ // the page is obtained from the first available shape
+ Visio::IVShapePtr firstshape = shapes[0];
+ Visio::IVPagePtr page = firstshape->ContainingPage;
+
+ Visio::IVSelectionPtr selection =
+ page->CreateSelection(Visio::visSelTypeSingle, Visio::visSelModeSkipSuper, (IDispatch *)firstshape);
+
+ // select the remaining shapes
+ for(std::vector<Visio::IVShapePtr>::const_iterator spos = shapes.begin()+1;
+ spos != shapes.end(); spos++)
+ {
+ // ignore shapes on different pages
+ if((*spos)->ContainingPage == page)
+ selection->Select(*spos, visSelect);
+ }
+
+ m_vsoApp->ActiveWindow->Page = (IDispatch *)page;
+ m_vsoApp->ActiveWindow->Selection = selection;
+ }
+
+ return 0;
+}
+
// $Id$
Modified: trunk/src/view/visio/addon/document.h
===================================================================
--- trunk/src/view/visio/addon/document.h 2008-12-29 15:49:54 UTC (rev 142)
+++ trunk/src/view/visio/addon/document.h 2008-12-30 18:06:26 UTC (rev 143)
@@ -19,6 +19,8 @@
#pragma once
#include "reportview.h"
+#include <Vaddon.h>
+
class CStudioAddon;
class CDocumentMonitor
@@ -36,7 +38,8 @@
void ShowReportView(Visio::IVApplicationPtr vsoApp);
void OnHideReportView();
- int SelectShape(const _bstr_t& id);
+ Visio::IVShapePtr FindShape(const _bstr_t& id);
+ int SelectShapes(const std::vector<_bstr_t>& ids);
// event objects for this document
Visio::IVEventPtr m_vsoPageAddedEvent;
Modified: trunk/src/view/visio/addon/extract.cpp
===================================================================
--- trunk/src/view/visio/addon/extract.cpp 2008-12-29 15:49:54 UTC (rev 142)
+++ trunk/src/view/visio/addon/extract.cpp 2008-12-30 18:06:26 UTC (rev 143)
@@ -22,8 +22,48 @@
#include <Visconst.h>
-TShapeType get_shape_type(Visio::IVShapePtr shape)
+MscPtr CDrawingExtractor::extract_msc(Visio::IVPagePtr vsoPage)
{
+ TDrawingType type = get_drawing_type(vsoPage);
+ if(type == DT_BMSC)
+ {
+ return extract_bmsc(vsoPage);
+ }
+ else if(type == DT_HMSC)
+ {
+ return extract_hmsc(vsoPage);
+ }
+ else
+ {
+ PrintError(stringize() << vsoPage->Name << ": "
+ << "Drawing is neither basic MSC nor HMSC.");
+ return NULL;
+ }
+}
+
+MscPtr CDrawingExtractor::extract_msc(Visio::IVDocumentPtr vsoDocument, const char* name)
+{
+ std::map<std::string,MscPtr>::iterator mpos = m_msc_cache.find(name);
+ if(mpos != m_msc_cache.end())
+ {
+ TRACE("extract_msc() drawing found in cache");
+ return mpos->second;
+ }
+
+ // random walk though all pages in the given document
+ for(int i = 1; i <= vsoDocument->Pages->Count; i++)
+ {
+ Visio::IVPagePtr page = vsoDocument->Pages->Item[i];
+
+ if(strcmp(page->Name, name) == 0)
+ return extract_msc(page);
+ }
+
+ return NULL;
+}
+
+CDrawingExtractor::TShapeType CDrawingExtractor::get_shape_type(Visio::IVShapePtr shape)
+{
// walk though all user-defined cells
// note: rows are numbered starting with 0
for(int i = 0; i < shape->RowCount[visSectionUser]; i++)
@@ -47,6 +87,8 @@
{_T("hmsc.start"), ST_HMSC_START},
{_T("hmsc.end"), ST_HMSC_END},
{_T("hmsc.reference"), ST_HMSC_REFERENCE},
+ {_T("hmsc.line"), ST_HMSC_LINE},
+ {_T("hmsc.arrow"), ST_HMSC_ARROW},
{NULL, ST_UNKNOWN}
};
@@ -70,7 +112,7 @@
return ST_UNKNOWN;
}
-TDrawingType get_drawing_type(CReportView *reporter, Visio::IVPagePtr vsoPage)
+CDrawingExtractor::TDrawingType CDrawingExtractor::get_drawing_type(Visio::IVPagePtr vsoPage)
{
Visio::IVShapesPtr vsoShapes = vsoPage->Shapes;
@@ -91,6 +133,8 @@
case ST_HMSC_START:
case ST_HMSC_END:
case ST_HMSC_REFERENCE:
+ case ST_HMSC_LINE:
+ case ST_HMSC_ARROW:
TRACE("get_drawing_type() detected HMSC");
return DT_HMSC;
@@ -103,29 +147,16 @@
return DT_UNKNOWN;
}
-struct SStrictOrder
+BMscPtr CDrawingExtractor::extract_bmsc(Visio::IVPagePtr vsoPage)
{
- double event_time;
- enum {
- ET_INCOMING,
- ET_OUTGOING
- } event_type;
+ // keep previous error indicator; this function may be called recursively
+ bool was_error = m_was_error;
+ m_was_error = false;
- long shape_id;
- TShapeType shape_type;
+ std::string page_name = (const char*)vsoPage->Name;
+ BMscPtr bmsc = new BMsc(page_name);
+ m_msc_cache[page_name] = bmsc;
- bool operator < (const SStrictOrder& s2) const
- {
- // old event < new event, incoming event < outgoing event
- return event_time < s2.event_time ||
- (event_time == s2.event_time && event_type < s2.event_type);
- }
-};
-
-BMscPtr extract_bmsc(CReportView *reporter, Visio::IVPagePtr vsoPage)
-{
- BMscPtr bmsc = new BMsc();
-
// temporary mappers Visio shape-id --> msc.h
std::map<long,InstancePtr> instances;
std::map<long,MscMessagePtr> messages;
@@ -161,14 +192,18 @@
case ST_HMSC_START:
case ST_HMSC_END:
case ST_HMSC_REFERENCE:
- reporter->Print(RS_ERROR, stringize()
- << "HMSC symbol '" << shape->Name << "' not allowed in basic MSC drawing.", shape);
+ case ST_HMSC_LINE:
+ case ST_HMSC_ARROW:
+ PrintError(stringize() << page_name << ": "
+ << "HMSC symbol '" << shape->Name << "' not allowed in basic MSC drawing.",
+ shapelist() << shape);
break;
case ST_UNKNOWN:
default:
- reporter->Print(RS_WARNING, stringize()
- << "Ignored a strange symbol '" << shape->Name << "'", shape);
+ PrintWarning(stringize() << page_name << ": "
+ << "Ignored a strange symbol '" << shape->Name << "'",
+ shapelist() << shape);
break;
}
}
@@ -208,47 +243,40 @@
{
case ST_BMSC_MESSAGE:
// which side of the message is connected?
- switch(connect->FromPart)
+ if(connect->FromPart == visBegin)
+ event.event_type = SStrictOrder::ET_OUTGOING;
+ else if(connect->FromPart == visEnd)
+ event.event_type = SStrictOrder::ET_INCOMING;
+ else
{
- case visBegin:
- event.event_type = SStrictOrder::ET_OUTGOING;
- break;
- case visEnd:
- event.event_type = SStrictOrder::ET_INCOMING;
- break;
-
- default:
- reporter->Print(RS_ERROR, stringize()
- << "Wrongly connected message '" << shape->Name << "'", shape);
- continue;
+ PrintError(stringize() << page_name << ": "
+ << "Wrongly connected message '" << shape->Name << "'",
+ shapelist() << shape << instance);
+ continue;
}
break;
case ST_BMSC_MESSAGE_LOST:
- switch(connect->FromPart)
+ if(connect->FromPart == visBegin)
+ event.event_type = SStrictOrder::ET_OUTGOING;
+ else
{
- case visBegin:
- event.event_type = SStrictOrder::ET_OUTGOING;
- break;
-
- default:
- reporter->Print(RS_ERROR, stringize()
- << "Wrongly connected message '" << shape->Name << "'", shape);
- continue;
+ PrintError(stringize() << page_name << ": "
+ << "Wrongly connected message '" << shape->Name << "'",
+ shapelist() << shape << instance);
+ continue;
}
break;
case ST_BMSC_MESSAGE_FOUND:
- switch(connect->FromPart)
+ if(connect->FromPart == visEnd)
+ event.event_type = SStrictOrder::ET_INCOMING;
+ else
{
- case visEnd:
- event.event_type = SStrictOrder::ET_INCOMING;
- break;
-
- default:
- reporter->Print(RS_ERROR, stringize()
- << "Wrongly connected message '" << shape->Name << "'", shape);
- continue;
+ PrintError(stringize() << page_name << ": "
+ << "Wrongly connected message '" << shape->Name << "'",
+ shapelist() << shape << instance);
+ continue;
}
break;
@@ -257,16 +285,21 @@
continue;
default:
- reporter->Print(RS_WARNING, stringize()
- << "Ignored a connection to unknown symbol '" << shape->Name << "'", shape);
+ PrintWarning(stringize() << page_name << ": "
+ << "Ignored a connection to unknown symbol '" << shape->Name << "'",
+ shapelist() << shape << instance);
continue;
}
std::pair<std::set<SStrictOrder>::iterator, bool> result = events.insert(event);
if(!result.second)
{
- reporter->Print(RS_ERROR, stringize()
- << "Multiple events cannot be attached to one point.", shape);
+ Visio::IVShapePtr collisional_shape =
+ vsoPage->Shapes->ItemFromID[result.first->shape_id];
+
+ PrintError(stringize() << page_name << ": "
+ << "Multiple events cannot be attached to one point.",
+ shapelist() << shape << collisional_shape << instance);
}
}
@@ -330,24 +363,360 @@
if(!mpos->second->is_glued())
{
- reporter->Print(RS_ERROR, stringize()
- << "Disconnected message '" << shape->Name << "'", shape);
+ PrintError(stringize() << page_name << ": "
+ << "Disconnected message '" << shape->Name << "'",
+ shapelist() << shape);
}
}
- reporter->Print(RS_NORMAL, stringize()
- << "Drawing '" << vsoPage->Name << "' converted to basic MSC.");
+ // return NULL on error
+ if(m_was_error)
+ {
+ m_was_error = was_error;
+ return NULL;
+ }
+
+ m_was_error = was_error;
return bmsc;
}
-HMscPtr extract_hmsc(CReportView *reporter, Visio::IVPagePtr vsoPage)
+CDrawingExtractor::TConnectedPart CDrawingExtractor::get_connected_part(Visio::IVConnectPtr connect)
{
- HMscPtr hmsc = new HMsc();
+ Visio::IVShapePtr line = connect->FromSheet;
+ TShapeType line_type = get_shape_type(line);
- reporter->Print(RS_NORMAL, "Drawing converted to HMSC.");
- return hmsc;
+ Visio::IVShapePtr shape = connect->ToSheet;
+ TShapeType shape_type = get_shape_type(shape);
- return (HMsc *)NULL;
+ std::string page_name = line->ContainingPage->Name;
+
+ if(connect->ToPart >= visConnectionPoint)
+ {
+ // height of the shape
+ Visio::IVCellPtr shape_height = shape->CellsSRC[visSectionObject][visRowXFormOut][visXFormHeight];
+
+ // position of respective connection point
+ short cellrow = connect->ToCell->Row;
+ Visio::IVCellPtr posy = shape->CellsSRC[visSectionConnectionPts][cellrow][visY];
+
+ // if attached to the bottom edge of the symbol
+ // note: coordinate origin [0,0] is at bottom left
+ if(fcmp(posy->Result[visDrawingUnits], 0.0) == 0)
+ {
+ // bottom edge: should be outgoing
+ if(line_type == ST_HMSC_LINE ||
+ line_type == ST_HMSC_ARROW && connect->FromPart == visBegin)
+ {
+ return CP_OUTGOING;
+ }
+ else
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Wrongly connected shape '" << shape->Name << "'.",
+ shapelist() << shape << line);
+ return CP_ERROR;
+ }
+ }
+ // if attached to the top edge of the symbol
+ else if(fcmp(posy->Result[visDrawingUnits], shape_height->Result[visDrawingUnits]) == 0)
+ {
+ // top edge: should be incoming
+ if(line_type == ST_HMSC_LINE ||
+ line_type == ST_HMSC_ARROW && connect->FromPart == visEnd)
+ {
+ return CP_INCOMING;
+ }
+ else
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Wrongly connected shape '" << shape->Name << "'.",
+ shapelist() << shape << line);
+ return CP_ERROR;
+ }
+ }
+ else
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Flow lines must be attached to a top or a bottom edge.",
+ shapelist() << shape << line);
+ return CP_ERROR;
+ }
+ }
+ else if(connect->ToPart == visWholeShape)
+ {
+ // only connection nodes can be connected this way
+ if(shape_type == ST_HMSC_CONNECTION)
+ {
+ if(line_type == ST_HMSC_ARROW)
+ {
+ if(connect->FromPart == visBegin)
+ return CP_OUTGOING;
+ else if(connect->FromPart == visEnd)
+ return CP_INCOMING;
+ else
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Wrongly connected shape '" << shape->Name << "'.",
+ shapelist() << shape << line);
+ return CP_ERROR;
+ }
+ }
+ else if(line_type == ST_HMSC_LINE)
+ return CP_UNKNOWN;
+ }
+ }
+
+ PrintError(stringize() << page_name << ": "
+ << "Wrongly connected shape '" << shape->Name << "'.",
+ shapelist() << shape << line);
+ return CP_ERROR;
}
+void CDrawingExtractor::set_as_predecessor(const NodeRelationPtr& relation,
+ Visio::IVShapePtr shape, const HMscNodePtr& node)
+{
+ std::string page_name = shape->ContainingPage->Name;
+
+ TShapeType type = get_shape_type(shape);
+ switch(type)
+ {
+ case ST_HMSC_CONNECTION:
+ case ST_HMSC_START:
+ case ST_HMSC_REFERENCE:
+ {
+ PredecessorNode *pred = dynamic_cast<PredecessorNode*>(node.get());
+ if(pred != NULL)
+ relation->set_predecessor(pred);
+ else
+ TRACE("set_as_predecessor() unexpected NULL");
+ break;
+ }
+
+ default:
+ PrintError(stringize() << page_name << ": "
+ << "Node '" << shape->Name << "' cannot be a predecessor.",
+ shapelist() << shape);
+ break;
+ }
+}
+
+void CDrawingExtractor::set_as_successor(const NodeRelationPtr& relation,
+ Visio::IVShapePtr shape, const HMscNodePtr& node)
+{
+ std::string page_name = shape->ContainingPage->Name;
+
+ TShapeType type = get_shape_type(shape);
+ switch(type)
+ {
+ case ST_HMSC_CONNECTION:
+ case ST_HMSC_END:
+ case ST_HMSC_REFERENCE:
+ {
+ SuccessorNode *succ = dynamic_cast<SuccessorNode*>(node.get());
+ if(succ != NULL)
+ relation->set_successor(succ);
+ else
+ TRACE("set_as_successor() unexpected NULL");
+ break;
+ }
+
+ default:
+ PrintError(stringize() << page_name << ": "
+ << "Node '" << shape->Name << "' cannot be a successor.",
+ shapelist() << shape);
+ break;
+ }
+}
+
+HMscPtr CDrawingExtractor::extract_hmsc(Visio::IVPagePtr vsoPage)
+{
+ // keep previous error indicator; this function may be called recursively
+ bool was_error = m_was_error;
+ m_was_error = false;
+
+ std::string page_name = (const char*)vsoPage->Name;
+ HMscPtr hmsc = new HMsc(page_name);
+ m_msc_cache[page_name] = hmsc;
+
+ // temporary mappers Visio shape-id --> msc.h
+ std::map<long,HMscNodePtr> nodes;
+ std::map<long,NodeRelationPtr> relations;
+
+ // first walk through all shapes: create objects
+ for(int i = 1; i <= vsoPage->Shapes->GetCount(); i++)
+ {
+ Visio::IVShapePtr shape = vsoPage->Shapes->Item[i];
+
+ TShapeType type = get_shape_type(shape);
+ switch(type)
+ {
+ case ST_BMSC_INSTANCE:
+ case ST_BMSC_MESSAGE:
+ case ST_BMSC_MESSAGE_LOST:
+ case ST_BMSC_MESSAGE_FOUND:
+ PrintError(stringize() << page_name << ": "
+ << "Basic MSC symbol '" << shape->Name << "' not allowed in HMSC drawing.",
+ shapelist() << shape);
+ break;
+
+ case ST_COMMENT:
+ case ST_TEXT:
+ // ignore text and comments
+ break;
+
+ case ST_HMSC_CONNECTION:
+ hmsc->add_node(nodes[shape->ID] = new ConnectionNode());
+ break;
+ case ST_HMSC_START:
+ {
+ if(hmsc->get_start() != NULL)
+ {
+ // FIXME: how to select the other start symbols?
+ PrintError(stringize() << page_name << ": "
+ << "Multiple HMSC start symbols.",
+ shapelist() << shape);
+ continue;
+ }
+ StartNode *new_start = new StartNode();
+ hmsc->set_start(new_start);
+ nodes[shape->ID] = new_start;
+ break;
+ }
+ case ST_HMSC_END:
+ hmsc->add_node(nodes[shape->ID] = new EndNode());
+ break;
+ case ST_HMSC_REFERENCE:
+ {
+ ReferenceNode *new_node = new ReferenceNode();
+ hmsc->add_node(new_node);
+ nodes[shape->ID] = new_node;
+
+ MscPtr msc = extract_msc(vsoPage->Document, shape->Text);
+ if(msc == NULL)
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Bad reference destination.",
+ shapelist() << shape);
+ }
+ else
+ new_node->set_msc(msc);
+ break;
+ }
+
+ case ST_HMSC_LINE:
+ case ST_HMSC_ARROW:
+ relations[shape->ID] = new NodeRelation();
+ break;
+
+ case ST_UNKNOWN:
+ default:
+ PrintWarning(stringize() << page_name << ": "
+ << "Ignored a strange symbol '" << shape->Name << "'",
+ shapelist() << shape);
+ break;
+ }
+ }
+
+ if(hmsc->get_start() == NULL)
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Missing HMSC start symbol.");
+
+ m_was_error = was_error;
+ return NULL;
+ }
+
+ // walk through detected lines and arrows
+ for(std::map<long,NodeRelationPtr>::iterator rpos = relations.begin();
+ rpos != relations.end(); rpos++)
+ {
+ Visio::IVShapePtr line = vsoPage->Shapes->ItemFromID[rpos->first];
+ // check the connector is properly connected
+ if(line->Connects->GetCount() != 2)
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Wrongly attached connector.",
+ shapelist() << line);
+ continue;
+ }
+
+ Visio::IVConnectPtr connect1 = line->Connects->Item[1];
+ Visio::IVShapePtr shape1 = connect1->ToSheet;
+ TShapeType shape1_type = get_shape_type(shape1);
+
+ Visio::IVConnectPtr connect2 = line->Connects->Item[2];
+ Visio::IVShapePtr shape2 = connect2->ToSheet;
+ TShapeType shape2_type = get_shape_type(shape2);
+
+ // determine to what edges is this connector attached
+ TConnectedPart dir1 = get_connected_part(connect1);
+ TConnectedPart dir2 = get_connected_part(connect2);
+ if(dir1 == CP_ERROR || dir2 == CP_ERROR)
+ continue;
+
+ // got an undirected line between two connection points
+ // FIXME: is there a better solution than printing an error report?
+ if(dir1 == CP_UNKNOWN && dir2 == CP_UNKNOWN)
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Cannot determine flow direction.",
+ shapelist() << line << shape1 << shape2);
+ continue;
+ }
+
+ std::map<long,HMscNodePtr>::iterator node1 = nodes.find(shape1->ID);
+ std::map<long,HMscNodePtr>::iterator node2 = nodes.find(shape2->ID);
+ if(node1 == nodes.end())
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Wrongly attached connector.",
+ shapelist() << line << shape1);
+ continue;
+ }
+ if(node2 == nodes.end())
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Wrongly attached connector.",
+ shapelist() << line << shape2);
+ continue;
+ }
+
+ if((dir1 == CP_OUTGOING || dir1 == CP_UNKNOWN) &&
+ (dir2 == CP_INCOMING || dir2 == CP_UNKNOWN))
+ {
+ // shape1 --> shape2
+ TRACE(shape1->Name << "-->" << shape2->Name);
+
+ set_as_predecessor(rpos->second, shape1, node1->second);
+ set_as_successor(rpos->second, shape2, node2->second);
+ }
+ else if((dir1 == CP_INCOMING || dir1 == CP_UNKNOWN) &&
+ (dir2 == CP_OUTGOING || dir2 == CP_UNKNOWN))
+ {
+ // shape2 --> shape1
+ TRACE(shape2->Name << "-->" << shape1->Name);
+
+ set_as_predecessor(rpos->second, shape2, node2->second);
+ set_as_successor(rpos->second, shape1, node1->second);
+ }
+ else
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Wrongly attached connector.",
+ shapelist() << line << shape1 << shape2);
+ continue;
+ }
+ }
+
+ // return NULL on error
+ if(m_was_error)
+ {
+ m_was_error = was_error;
+ return NULL;
+ }
+
+ m_was_error = was_error;
+ return hmsc;
+}
+
// $Id$
Modified: trunk/src/view/visio/addon/extract.h
===================================================================
--- trunk/src/view/visio/addon/extract.h 2008-12-29 15:49:54 UTC (rev 142)
+++ trunk/src/view/visio/addon/extract.h 2008-12-30 18:06:26 UTC (rev 143)
@@ -18,38 +18,110 @@
#pragma once
#include "reportview.h"
+#include "fcmp.h"
#include <Vaddon.h>
#include "data/msc.h"
-enum TShapeType
+class CDrawingExtractor
{
- ST_BMSC_INSTANCE,
- ST_BMSC_MESSAGE,
- ST_BMSC_MESSAGE_LOST,
- ST_BMSC_MESSAGE_FOUND,
- ST_COMMENT,
- ST_TEXT,
- ST_HMSC_CONNECTION,
- ST_HMSC_START,
- ST_HMSC_END,
- ST_HMSC_REFERENCE,
- ST_UNKNOWN
-};
+public:
+ CDrawingExtractor(CReportView *reporter)
+ {
+ m_reporter = reporter;
+ m_was_error = false;
+ }
-TShapeType get_shape_type(Visio::IVShapePtr shape);
+ //! extracts drawing at a given page
+ MscPtr extract_msc(Visio::IVPagePtr vsoPage);
+ //! extracts drawing with given name in a given document
+ MscPtr extract_msc(Visio::IVDocumentPtr vsoDocument, const char* name);
-enum TDrawingType
-{
- DT_UNKNOWN = 0,
- DT_BMSC = 1,
- DT_HMSC = 2
-};
+protected:
+ CReportView *m_reporter;
+ bool m_was_error;
-TDrawingType get_drawing_type(CReportView *reporter, Visio::IVPagePtr vsoPage);
+ void PrintError(const std::string& message,
+ const std::vector<_bstr_t>& references = std::vector<_bstr_t>())
+ {
+ m_reporter->Print(RS_ERROR, message, references);
+ m_was_error = true;
+ }
-BMscPtr extract_bmsc(CReportView *reporter, Visio::IVPagePtr vsoPage);
+ void PrintWarning(const std::string& message,
+ const std::vector<_bstr_t>& references = std::vector<_bstr_t>())
+ {
+ m_reporter->Print(RS_WARNING, message, references);
+ }
-HMscPtr extract_hmsc(CReportView *reporter, Visio::IVPagePtr vsoPage);
+ std::map<std::string,MscPtr> m_msc_cache;
+ enum TShapeType
+ {
+ ST_BMSC_INSTANCE,
+ ST_BMSC_MESSAGE,
+ ST_BMSC_MESSAGE_LOST,
+ ST_BMSC_MESSAGE_FOUND,
+ ST_COMMENT,
+ ST_TEXT,
+ ST_HMSC_CONNECTION,
+ ST_HMSC_START,
+ ST_HMSC_END,
+ ST_HMSC_REFERENCE,
+ ST_HMSC_LINE,
+ ST_HMSC_ARROW,
+ ST_UNKNOWN
+ };
+
+ TShapeType get_shape_type(Visio::IVShapePtr shape);
+
+ enum TDrawingType
+ {
+ DT_UNKNOWN = 0,
+ DT_BMSC = 1,
+ DT_HMSC = 2
+ };
+
+ TDrawingType get_drawing_type(Visio::IVPagePtr vsoPage);
+
+ struct SStrictOrder
+ {
+ double event_time;
+ enum
+ {
+ ET_INCOMING,
+ ET_OUTGOING
+ } event_type;
+
+ long shape_id;
+ TShapeType shape_type;
+
+ bool operator < (const SStrictOrder& s2) const
+ {
+ int cres = fcmp(event_time, s2.event_time);
+ // old event < new event, incoming event < outgoing event
+ return cres < 0 || (cres == 0 && event_type < s2.event_type);
+ }
+ };
+
+ BMscPtr extract_bmsc(Visio::IVPagePtr vsoPage);
+
+ enum TConnectedPart
+ {
+ CP_ERROR = 0,
+ CP_INCOMING,
+ CP_OUTGOING,
+ CP_UNKNOWN
+ };
+
+ TConnectedPart get_connected_part(Visio::IVConnectPtr connect);
+
+ void set_as_predecessor(const NodeRelationPtr& relation,
+ Visio::IVShapePtr shape, const HMscNodePtr& node);
+ void set_as_successor(const NodeRelationPtr& relation,
+ Visio::IVShapePtr shape, const HMscNodePtr& node);
+
+ HMscPtr extract_hmsc(Visio::IVPagePtr vsoPage);
+};
+
// $Id$
Added: trunk/src/view/visio/addon/fcmp.cpp
===================================================================
--- trunk/src/view/visio/addon/fcmp.cpp (rev 0)
+++ trunk/src/view/visio/addon/fcmp.cpp 2008-12-30 18:06:26 UTC (rev 143)
@@ -0,0 +1,83 @@
+/*
+ fcmp
+ Copyright (c) 1998-2000 Theodore C. Belding
+ University of Michigan Center for the Study of Complex Systems
+ <mailto:Ted...@um...>
+ <http://www-personal.umich.edu/~streak/>
+
+ This file is part of the fcmp distribution. fcmp is free software;
+ you can redistribute and modify it under the terms of the GNU Library
+ General Public License (LGPL), version 2 or later. This software
+ comes with absolutely no warranty. See the file COPYING for details
+ and terms of copying.
+
+ Description:
+
+ Knuth's floating point comparison operators, from:
+ Knuth, D. E. (1998). The Art of Computer Programming.
+ Volume 2: Seminumerical Algorithms. 3rd ed. Addison-Wesley.
+ Section 4.2.2, p. 233. ISBN 0-201-89684-2.
+
+ Input parameters:
+ x1, x2: numbers to be compared
+ epsilon: determines tolerance
+
+ epsilon should be carefully chosen based on the machine's precision,
+ the observed magnitude of error, the desired precision, and the
+ magnitude of the numbers to be compared. See the fcmp README file for
+ more information.
+
+ This routine may be used for both single-precision (float) and
+ double-precision (double) floating-point numbers.
+
+ Returns:
+ -1 if x1 < x2
+ 0 if x1 == x2
+ 1 if x1 > x2
+*/
+
+#include "fcmp.h"
+#include <math.h>
+
+int fcmp(double x1, double x2, double epsilon) {
+ int exponent;
+ double delta;
+ double difference;
+
+ /* Get exponent(max(fabs(x1), fabs(x2))) and store it in exponent. */
+
+ /* If neither x1 nor x2 is 0, */
+ /* this is equivalent to max(exponent(x1), exponent(x2)). */
+
+ /* If either x1 or x2 is 0, its exponent returned by frexp would be 0, */
+ /* which is much larger than the exponents of numbers close to 0 in */
+ /* magnitude. But the exponent of 0 should be less than any number */
+ /* whose magnitude is greater than 0. */
+
+ /* So we only want to set exponent to 0 if both x1 an...
[truncated message content] |
|
From: <got...@us...> - 2009-01-02 16:35:44
|
Revision: 145
http://scstudio.svn.sourceforge.net/scstudio/?rev=145&view=rev
Author: gotthardp
Date: 2009-01-02 16:35:27 +0000 (Fri, 02 Jan 2009)
Log Message:
-----------
Implemented extraction of coregions and general ordering. The drawing extractor is now functionally complete.
Modified Paths:
--------------
trunk/src/view/visio/addon/extract.cpp
trunk/src/view/visio/addon/extract.h
trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx
trunk/src/view/visio/stencils/Sequence Chart Studio/HMSC.vsx
Modified: trunk/src/view/visio/addon/extract.cpp
===================================================================
--- trunk/src/view/visio/addon/extract.cpp 2009-01-01 17:27:43 UTC (rev 144)
+++ trunk/src/view/visio/addon/extract.cpp 2009-01-02 16:35:27 UTC (rev 145)
@@ -81,6 +81,9 @@
{_T("bmsc.message"), ST_BMSC_MESSAGE},
{_T("bmsc.message.lost"), ST_BMSC_MESSAGE_LOST},
{_T("bmsc.message.found"), ST_BMSC_MESSAGE_FOUND},
+ {_T("bmsc.coregion.box"), ST_BMSC_COREGION},
+ {_T("bmsc.order.line"), ST_BMSC_ORDER_LINE},
+ {_T("bmsc.order.arrow"), ST_BMSC_ORDER_ARROW},
{_T("comment"), ST_COMMENT},
{_T("text"), ST_TEXT},
{_T("hmsc.connection"), ST_HMSC_CONNECTION},
@@ -117,24 +120,19 @@
Visio::IVShapesPtr vsoShapes = vsoPage->Shapes;
// walk through all shapes in the drawing
- for(int i = 1; i <= vsoShapes->GetCount(); i++)
+ for(int i = 1; i <= vsoShapes->Count; i++)
{
- TShapeType type = get_shape_type(vsoShapes->Item[i]);
+ // check for significant shapes in the drawing
+ TShapeType type = get_shape_type(vsoShapes->Item[i]);
switch(type)
{
case ST_BMSC_INSTANCE:
- case ST_BMSC_MESSAGE:
- case ST_BMSC_MESSAGE_LOST:
- case ST_BMSC_MESSAGE_FOUND:
TRACE("get_drawing_type() detected bMSC");
return DT_BMSC;
- case ST_HMSC_CONNECTION:
case ST_HMSC_START:
case ST_HMSC_END:
case ST_HMSC_REFERENCE:
- case ST_HMSC_LINE:
- case ST_HMSC_ARROW:
TRACE("get_drawing_type() detected HMSC");
return DT_HMSC;
@@ -147,6 +145,220 @@
return DT_UNKNOWN;
}
+CDrawingExtractor::SPoint CDrawingExtractor::get_connect_point(Visio::IVConnectPtr connect)
+{
+ Visio::IVShapePtr shape = connect->ToSheet;
+
+ short cellrow = connect->ToCell->Row;
+ Visio::IVCellPtr posx = shape->CellsSRC[visSectionConnectionPts][cellrow][visX];
+ Visio::IVCellPtr posy = shape->CellsSRC[visSectionConnectionPts][cellrow][visY];
+
+ return SPoint(posx->Result[visDrawingUnits], posy->Result[visDrawingUnits]);
+}
+
+void CDrawingExtractor::assert_no_nested_FromConnects(Visio::IVShapePtr shape)
+{
+ for(int i = 1; i <= shape->Shapes->Count; i++)
+ assert_no_FromConnects(shape->Shapes->Item[i]);
+}
+
+void CDrawingExtractor::assert_no_FromConnects(Visio::IVShapePtr shape)
+{
+ std::string page_name = (const char*)shape->ContainingPage->Name;
+
+ // assert this shape has no FromConnect entries
+ if(shape->FromConnects->Count > 0)
+ {
+ PrintWarning(stringize() << page_name << ": "
+ << "Unexpected connections to '" << shape->Name << "'",
+ shapelist() << shape);
+ }
+
+ for(int i = 1; i <= shape->Shapes->Count; i++)
+ assert_no_FromConnects(shape->Shapes->Item[i]);
+}
+
+CoregionAreaPtr CDrawingExtractor::create_coregion_area(const MscMessageMap& messages, Visio::IVShapePtr coregion)
+{
+ Visio::IVPagePtr vsoPage = coregion->ContainingPage;
+ std::string page_name = (const char*)vsoPage->Name;
+
+ typedef std::map<SPoint,CoregionEventPtr> TCoregionEvents;
+ TCoregionEvents events;
+ std::set<long> relations;
+
+ CoregionAreaPtr area = new CoregionArea();
+
+ // assert there is no connection to inner shapes of the coregion group
+ assert_no_nested_FromConnects(coregion);
+
+ // step 1: create events
+ // random walk through all connectors from other shapes
+ for(int i = 1; i <= coregion->FromConnects->Count; i++)
+ {
+ Visio::IVConnectPtr connect = coregion->FromConnects->Item[i];
+ SPoint pos = get_connect_point(connect);
+ // shape connected to this point
+ Visio::IVShapePtr shape = connect->FromSheet;
+
+ // create coregion event
+ CoregionEventPtr event = area->add_event(new CoregionEvent());
+
+ // connect the message
+ TShapeType type = get_shape_type(shape);
+ switch(type)
+ {
+ case ST_BMSC_MESSAGE:
+ {
+ CompleteMessagePtr message = find_message<CompleteMessage>(messages, shape->ID);
+ if(message == NULL)
+ continue;
+
+ switch(connect->FromPart)
+ {
+ case visBegin:
+ message->glue_send_event(event);
+ break;
+ case visEnd:
+ message->glue_receive_event(event);
+ break;
+
+ default:
+ PrintError(stringize() << page_name << ": "
+ << "Wrongly connected message '" << shape->Name << "'",
+ shapelist() << shape << coregion);
+ continue;
+ }
+ break;
+ }
+
+ case ST_BMSC_MESSAGE_LOST:
+ {
+ IncompleteMessagePtr message = find_message<IncompleteMessage>(messages, shape->ID);
+ if(message == NULL)
+ continue;
+
+ if(connect->FromPart == visBegin)
+ message->glue_event(event);
+ else
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Wrongly connected message '" << shape->Name << "'",
+ shapelist() << shape << coregion);
+ continue;
+ }
+ break;
+ }
+ case ST_BMSC_MESSAGE_FOUND:
+ {
+ IncompleteMessagePtr message = find_message<IncompleteMessage>(messages, shape->ID);
+ if(message == NULL)
+ continue;
+
+ if(connect->FromPart == visEnd)
+ message->glue_event(event);
+ else
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Wrongly connected message '" << shape->Name << "'",
+ shapelist() << shape << coregion);
+ continue;
+ }
+ break;
+ }
+
+ case ST_BMSC_ORDER_LINE:
+ case ST_BMSC_ORDER_ARROW:
+ relations.insert(shape->ID);
+ continue;
+
+ // ignore other shapes
+ default:
+ continue;
+ }
+
+ // store the CoregionEventPtr for each point
+ std::pair<TCoregionEvents::iterator, bool> result =
+ events.insert(std::make_pair<SPoint,CoregionEventPtr>(pos, event));
+ if(!result.second)
+ {
+ // FIXME: select collisional shapes
+ PrintError(stringize() << page_name << ": "
+ << "Multiple events cannot be attached to one point.",
+ shapelist() << shape << coregion);
+ }
+ }
+
+ // step 2: connect events
+ for(std::set<long>::const_iterator rpos = relations.begin();
+ rpos != relations.end(); rpos++)
+ {
+ Visio::IVShapePtr line = vsoPage->Shapes->ItemFromID[*rpos];
+
+ // check the connector is properly connected
+ if(line->Connects->Count != 2)
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Wrongly attached general ordering.",
+ shapelist() << line);
+ continue;
+ }
+
+ Visio::IVConnectPtr connect1 = line->Connects->Item[1];
+ SPoint pos1 = get_connect_point(connect1);
+ Visio::IVConnectPtr connect2 = line->Connects->Item[2];
+ SPoint pos2 = get_connect_point(connect2);
+
+ TCoregionEvents::const_iterator event1 = events.find(pos1);
+ TCoregionEvents::const_iterator event2 = events.find(pos2);
+ if(event1 == events.end() || event2 == events.end()
+ || event1 == event2)
+ {
+ PrintError(stringize() << page_name << ": "
+ << "General ordering must connect two different events.",
+ shapelist() << line);
+ continue;
+ }
+
+ TShapeType line_type = get_shape_type(line);
+ if(line_type == ST_BMSC_ORDER_LINE)
+ {
+ // the position is determined from the X coordinate
+ if(pos1.m_x < pos2.m_x)
+ event1->second->add_successor(event2->second.get());
+ else if(pos2.m_x < pos1.m_x)
+ event2->second->add_successor(event1->second.get());
+ else
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Cannot determine event order.",
+ shapelist() << line);
+ }
+ }
+ else if(line_type == ST_BMSC_ORDER_ARROW)
+ {
+ // the position is determined from the arrow
+ if(connect1->FromPart == visBegin && connect2->FromPart == visEnd)
+ event1->second->add_successor(event2->second.get());
+ else if(connect2->FromPart == visBegin && connect1->FromPart == visEnd)
+ event2->second->add_successor(event1->second.get());
+ else
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Cannot determine event order.",
+ shapelist() << line);
+ }
+ }
+ else
+ {
+ // this should never happen
+ TRACE("process_coregion() unknown connector in the list of relations");
+ }
+ }
+
+ return area;
+}
+
BMscPtr CDrawingExtractor::extract_bmsc(Visio::IVPagePtr vsoPage)
{
// keep previous error indicator; this function may be called recursively
@@ -159,10 +371,10 @@
// temporary mappers Visio shape-id --> msc.h
std::map<long,InstancePtr> instances;
- std::map<long,MscMessagePtr> messages;
+ MscMessageMap messages;
// first walk through all shapes: create objects
- for(int i = 1; i <= vsoPage->Shapes->GetCount(); i++)
+ for(int i = 1; i <= vsoPage->Shapes->Count; i++)
{
Visio::IVShapePtr shape = vsoPage->Shapes->Item[i];
@@ -183,9 +395,12 @@
messages[shape->ID] = new IncompleteMessage(FOUND, (const char*)shape->Text);
break;
+ case ST_BMSC_COREGION:
+ case ST_BMSC_ORDER_LINE:
+ case ST_BMSC_ORDER_ARROW:
case ST_COMMENT:
case ST_TEXT:
- // ignore text and comments
+ // ignore other basic MSC symbols
break;
case ST_HMSC_CONNECTION:
@@ -213,21 +428,18 @@
ipos != instances.end(); ipos++)
{
Visio::IVShapePtr instance = vsoPage->Shapes->ItemFromID[ipos->first];
-
// connect instance to the bMSC
bmsc->add_instance(ipos->second);
- // create strict order area
- EventAreaPtr area = new StrictOrderArea();
- ipos->second->add_area(area);
+ // assert there is no connection to inner shapes of the instance group
+ assert_no_nested_FromConnects(instance);
+
std::set<SStrictOrder> events;
// random walk through all connectors from others
- for(int i = 1; i <= instance->FromConnects->GetCount(); i++)
+ for(int i = 1; i <= instance->FromConnects->Count; i++)
{
Visio::IVConnectPtr connect = instance->FromConnects->Item[i];
- // position of respective connection point
- short cellrow = connect->ToCell->Row;
- Visio::IVCellPtr posx = instance->CellsSRC[visSectionConnectionPts][cellrow][visX];
+ SPoint pos = get_connect_point(connect);
// shape connected to this instance
Visio::IVShapePtr shape = connect->FromSheet;
@@ -235,9 +447,8 @@
SStrictOrder event;
event.shape_id = shape->ID;
event.shape_type = get_shape_type(shape);
+ event.event_time = pos.m_x;
- event.event_time = posx->Result[visDrawingUnits];
-
// which shape is connected?
switch(event.shape_type)
{
@@ -284,6 +495,22 @@
// ignore comments
continue;
+ case ST_BMSC_COREGION:
+ // which side of the corregion is connected?
+ // note: proper coregion placement is required to assure ORDER_LINE ordering
+ if(connect->FromPart == visBegin)
+ event.event_type = SStrictOrder::ET_OUTGOING;
+ else if(connect->FromPart == visEnd)
+ event.event_type = SStrictOrder::ET_INCOMING;
+ else
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Wrongly connected coregion '" << shape->Name << "'",
+ shapelist() << shape << instance);
+ continue;
+ }
+ break;
+
default:
PrintWarning(stringize() << page_name << ": "
<< "Ignored a connection to unknown symbol '" << shape->Name << "'",
@@ -291,9 +518,11 @@
continue;
}
- std::pair<std::set<SStrictOrder>::iterator, bool> result = events.insert(event);
+ std::pair<std::set<SStrictOrder>::iterator, bool> result =
+ events.insert(event);
if(!result.second)
{
+ // FIXME: select all collisional shapes
Visio::IVShapePtr collisional_shape =
vsoPage->Shapes->ItemFromID[result.first->shape_id];
@@ -303,60 +532,138 @@
}
}
+ enum
+ {
+ ST_EXPECTING_AREA, // blank space between areas
+ ST_STRICT, // building a strict order area
+ ST_COREGION // building a coregion area
+ } state = ST_EXPECTING_AREA;
+
+ StrictOrderAreaPtr strict_area;
+ long coregion_id;
+
// walk though the events in a time-order
for(std::set<SStrictOrder>::iterator epos = events.begin();
epos != events.end(); epos++)
{
+ Visio::IVShapePtr shape = vsoPage->Shapes->ItemFromID[epos->shape_id];
+
switch(epos->shape_type)
{
case ST_BMSC_MESSAGE:
- {
- std::map<long,MscMessagePtr>::iterator mpos = messages.find(epos->shape_id);
- if(mpos == messages.end())
- continue;
+ switch(state)
+ {
+ case ST_EXPECTING_AREA:
+ ipos->second->add_area(strict_area = new StrictOrderArea());
+ state = ST_STRICT;
+ /* no break */
+ case ST_STRICT:
+ {
+ CompleteMessagePtr message = find_message<CompleteMessage>(messages, epos->shape_id);
+ if(message == NULL)
+ continue;
- CompleteMessagePtr message =
- boost::dynamic_pointer_cast<CompleteMessage>(mpos->second);
- if(message == NULL)
- continue;
+ StrictEventPtr event = strict_area->add_event(new StrictEvent());
+ if(epos->event_type == SStrictOrder::ET_OUTGOING)
+ message->glue_send_event(event);
+ else if(epos->event_type == SStrictOrder::ET_INCOMING)
+ message->glue_receive_event(event);
- EventPtr event = area->add_event();
- switch(epos->event_type)
- {
- case SStrictOrder::ET_OUTGOING:
- message->glue_send_event(event);
break;
- case SStrictOrder::ET_INCOMING:
- message->glue_receive_event(event);
+ }
+
+ case ST_COREGION:
+ PrintError(stringize() << page_name << ": "
+ << "Instance events cannot occur behind coregion.",
+ shapelist() << shape << instance);
break;
}
-
break;
- }
case ST_BMSC_MESSAGE_LOST:
case ST_BMSC_MESSAGE_FOUND:
- {
- std::map<long,MscMessagePtr>::iterator mpos = messages.find(epos->shape_id);
- if(mpos == messages.end())
- continue;
+ switch(state)
+ {
+ case ST_EXPECTING_AREA:
+ ipos->second->add_area(strict_area = new StrictOrderArea());
+ state = ST_STRICT;
+ /* no break */
+ case ST_STRICT:
+ {
+ IncompleteMessagePtr message = find_message<IncompleteMessage>(messages, epos->shape_id);
+ if(message == NULL)
+ continue;
- IncompleteMessagePtr message =
- boost::dynamic_pointer_cast<IncompleteMessage>(mpos->second);
- if(message == NULL)
- continue;
+ StrictEventPtr event = strict_area->add_event(new StrictEvent());
+ message->glue_event(event);
- EventPtr event = area->add_event();
- message->glue_event(event);
+ break;
+ }
+ case ST_COREGION:
+ PrintError(stringize() << page_name << ": "
+ << "Instance events cannot occur behind coregion.",
+ shapelist() << shape << instance);
+ break;
+ }
break;
+
+ case ST_BMSC_COREGION:
+ {
+ switch(state)
+ {
+ case ST_EXPECTING_AREA:
+ case ST_STRICT:
+ if(epos->event_type == SStrictOrder::ET_OUTGOING)
+ {
+ ipos->second->add_area(create_coregion_area(messages, shape));
+ }
+ else
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Misdirected coregion.",
+ shapelist() << shape);
+ }
+
+ state = ST_COREGION;
+ coregion_id = epos->shape_id;
+ break;
+
+ case ST_COREGION:
+ if(coregion_id != epos->shape_id)
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Overlapping coregion.",
+ shapelist() << shape);
+ }
+ else if(epos->event_type == SStrictOrder::ET_INCOMING)
+ {
+ state = ST_EXPECTING_AREA;
+ }
+ else
+ {
+ // the error report should already have been printed
+ TRACE("extract_bmsc() bad coregion connection");
+ }
+ break;
+ }
+ break;
}
}
}
+
+ if(state == ST_COREGION)
+ {
+ Visio::IVShapePtr shape = vsoPage->Shapes->ItemFromID[coregion_id];
+
+ PrintError(stringize() << page_name << ": "
+ << "Disconnected coregion.",
+ shapelist() << shape);
+ }
}
// walk through detected messages: check all messages are connected
- for(std::map<long,MscMessagePtr>::const_iterator mpos = messages.begin();
+ for(MscMessageMap::const_iterator mpos = messages.begin();
mpos != messages.end(); mpos++)
{
Visio::IVShapePtr shape = vsoPage->Shapes->ItemFromID[mpos->first];
@@ -392,16 +699,14 @@
if(connect->ToPart >= visConnectionPoint)
{
+ // position of respective connection point
+ SPoint pos = get_connect_point(connect);
// height of the shape
Visio::IVCellPtr shape_height = shape->CellsSRC[visSectionObject][visRowXFormOut][visXFormHeight];
- // position of respective connection point
- short cellrow = connect->ToCell->Row;
- Visio::IVCellPtr posy = shape->CellsSRC[visSectionConnectionPts][cellrow][visY];
-
// if attached to the bottom edge of the symbol
// note: coordinate origin [0,0] is at bottom left
- if(fcmp(posy->Result[visDrawingUnits], 0.0) == 0)
+ if(fcmp(pos.m_y, 0.0) == 0)
{
// bottom edge: should be outgoing
if(line_type == ST_HMSC_LINE ||
@@ -418,7 +723,7 @@
}
}
// if attached to the top edge of the symbol
- else if(fcmp(posy->Result[visDrawingUnits], shape_height->Result[visDrawingUnits]) == 0)
+ else if(fcmp(pos.m_y, shape_height->Result[visDrawingUnits]) == 0)
{
// top edge: should be incoming
if(line_type == ST_HMSC_LINE ||
@@ -543,7 +848,7 @@
std::map<long,NodeRelationPtr> relations;
// first walk through all shapes: create objects
- for(int i = 1; i <= vsoPage->Shapes->GetCount(); i++)
+ for(int i = 1; i <= vsoPage->Shapes->Count; i++)
{
Visio::IVShapePtr shape = vsoPage->Shapes->Item[i];
@@ -632,7 +937,7 @@
{
Visio::IVShapePtr line = vsoPage->Shapes->ItemFromID[rpos->first];
// check the connector is properly connected
- if(line->Connects->GetCount() != 2)
+ if(line->Connects->Count != 2)
{
PrintError(stringize() << page_name << ": "
<< "Wrongly attached connector.",
Modified: trunk/src/view/visio/addon/extract.h
===================================================================
--- trunk/src/view/visio/addon/extract.h 2009-01-01 17:27:43 UTC (rev 144)
+++ trunk/src/view/visio/addon/extract.h 2009-01-02 16:35:27 UTC (rev 145)
@@ -62,6 +62,9 @@
ST_BMSC_MESSAGE,
ST_BMSC_MESSAGE_LOST,
ST_BMSC_MESSAGE_FOUND,
+ ST_BMSC_COREGION,
+ ST_BMSC_ORDER_LINE,
+ ST_BMSC_ORDER_ARROW,
ST_COMMENT,
ST_TEXT,
ST_HMSC_CONNECTION,
@@ -73,6 +76,7 @@
ST_UNKNOWN
};
+ //! determine MSC symbol represented by the given shape
TShapeType get_shape_type(Visio::IVShapePtr shape);
enum TDrawingType
@@ -82,8 +86,47 @@
DT_HMSC = 2
};
+ //! determine type of the drawing on the given page
TDrawingType get_drawing_type(Visio::IVPagePtr vsoPage);
+ struct SPoint
+ {
+ SPoint(double x, double y)
+ : m_x(x), m_y(y)
+ { }
+
+ double m_x;
+ double m_y;
+
+ bool operator < (const SPoint& p2) const
+ {
+ int resy = fcmp(m_y, p2.m_y);
+ return resy < 0 || (resy == 0 && fcmp(m_x, p2.m_x) < 0);
+ }
+ };
+
+ //! get coordinates of the given Connect element
+ SPoint get_connect_point(Visio::IVConnectPtr connect);
+
+ //! assert the given shape has no connections to its sub-shapes
+ void assert_no_nested_FromConnects(Visio::IVShapePtr shape);
+ void assert_no_FromConnects(Visio::IVShapePtr shape);
+
+ typedef std::map<long,MscMessagePtr> MscMessageMap;
+
+ template<class M>
+ boost::intrusive_ptr<M> find_message(const MscMessageMap& messages, long id)
+ {
+ MscMessageMap::const_iterator mpos = messages.find(id);
+ if(mpos == messages.end())
+ return NULL;
+
+ return boost::dynamic_pointer_cast<M>(mpos->second);
+ }
+
+ //! process the given coregion and build a relevant CoregionArea
+ CoregionAreaPtr create_coregion_area(const MscMessageMap& messages, Visio::IVShapePtr coregion);
+
struct SStrictOrder
{
double event_time;
@@ -99,11 +142,15 @@
bool operator < (const SStrictOrder& s2) const
{
int cres = fcmp(event_time, s2.event_time);
+ // no other connection allowed with coregion begin/end
+ if(shape_type == ST_BMSC_COREGION || s2.shape_type == ST_BMSC_COREGION)
+ return cres < 0;
// old event < new event, incoming event < outgoing event
return cres < 0 || (cres == 0 && event_type < s2.event_type);
}
};
+ //! process the given page and build a relevant BMsc
BMscPtr extract_bmsc(Visio::IVPagePtr vsoPage);
enum TConnectedPart
@@ -114,13 +161,17 @@
CP_UNKNOWN
};
+ //! Determines a type of connection represented by the given Connect
TConnectedPart get_connected_part(Visio::IVConnectPtr connect);
+ //! sets given shape/node as a predecessor in the given relation
void set_as_predecessor(const NodeRelationPtr& relation,
Visio::IVShapePtr shape, const HMscNodePtr& node);
+ //! sets given shape/node as a successor in the given relation
void set_as_successor(const NodeRelationPtr& relation,
Visio::IVShapePtr shape, const HMscNodePtr& node);
+ //! process the given page and build a relevant HMsc
HMscPtr extract_hmsc(Visio::IVPagePtr vsoPage);
};
Modified: trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx
===================================================================
--- trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx 2009-01-01 17:27:43 UTC (rev 144)
+++ trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx 2009-01-02 16:35:27 UTC (rev 145)
@@ -1,34 +1,48 @@
<?xml version='1.0' encoding='utf-8' ?>
-<VisioDocument key='44525190D13F1F02E8C9D05270507BF0B06813E63FDEA640A55050AE83E678E90790B96150EDA24599D7F2703C36A723B9824B6412B273480AFB2676F37CC990' start='190' xmlns='http://schemas.microsoft.com/visio/2003/core' metric='0' DocLangID='1033' buildnum='8161' version='11.0' xml:space='preserve'><DocumentProperties><Title>Basic MSC</Title><Creator>Petr Gotthard</Creator><Company>Brno</Company><BuildNumberCreated>738205665</BuildNumberCreated><BuildNumberEdited>738205665</BuildNumberEdited><TimeCreated>2008-12-14T11:32:13</TimeCreated><TimeSaved>2008-12-30T15:13:28</TimeSaved><TimeEdited>2008-12-30T15:12:33</TimeEdited><TimePrinted>2008-12-14T11:32:13</TimePrinted></DocumentProperties><DocumentSettings TopPage='0' DefaultTextStyle='3' DefaultLineStyle='3' DefaultFillStyle='3' DefaultGuideStyle='4'><GlueSettings>9</GlueSettings><SnapSettings>65847</SnapSettings><SnapExtensions>34</SnapExtensions><DynamicGridEnabled>0</DynamicGridEnabled><ProtectStyles>0</ProtectStyles><ProtectShapes>0</ProtectShapes><ProtectMasters>0</ProtectMasters><ProtectBkgnds>0</ProtectBkgnds></DocumentSettings><Colors><ColorEntry IX='0' RGB='#000000'/><ColorEntry IX='1' RGB='#FFFFFF'/><ColorEntry IX='2' RGB='#FF0000'/><ColorEntry IX='3' RGB='#00FF00'/><ColorEntry IX='4' RGB='#0000FF'/><ColorEntry IX='5' RGB='#FFFF00'/><ColorEntry IX='6' RGB='#FF00FF'/><ColorEntry IX='7' RGB='#00FFFF'/><ColorEntry IX='8' RGB='#800000'/><ColorEntry IX='9' RGB='#008000'/><ColorEntry IX='10' RGB='#000080'/><ColorEntry IX='11' RGB='#808000'/><ColorEntry IX='12' RGB='#800080'/><ColorEntry IX='13' RGB='#008080'/><ColorEntry IX='14' RGB='#C0C0C0'/><ColorEntry IX='15' RGB='#E6E6E6'/><ColorEntry IX='16' RGB='#CDCDCD'/><ColorEntry IX='17' RGB='#B3B3B3'/><ColorEntry IX='18' RGB='#9A9A9A'/><ColorEntry IX='19' RGB='#808080'/><ColorEntry IX='20' RGB='#666666'/><ColorEntry IX='21' RGB='#4D4D4D'/><ColorEntry IX='22' RGB='#333333'/><ColorEntry IX='23' RGB='#1A1A1A'/></Colors><FaceNames><FaceName ID='1' Name='Arial Unicode MS' UnicodeRanges='-1 -369098753 63 0' CharSets='1614741759 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='357'/><FaceName ID='2' Name='Symbol' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 5 1 2 1 7 6 2 5 7' Flags='261'/><FaceName ID='3' Name='Wingdings' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 0 0 0 0 0 0 0 0 0' Flags='261'/><FaceName ID='4' Name='Arial' UnicodeRanges='31367 -2147483648 8 0' CharSets='1073742335 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='325'/><FaceName ID='5' Name='SimSun' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='6' Name='PMingLiU' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='7' Name='MS PGothic' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='8' Name='Dotum' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='9' Name='Sylfaen' UnicodeRanges='67110535 0 0 0' CharSets='536871071 0' Panos='1 10 5 2 5 3 6 3 3 3' Flags='325'/><FaceName ID='10' Name='Estrangelo Edessa' UnicodeRanges='-2147459008 0 128 0' CharSets='0 0' Panos='3 8 6 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='11' Name='Vrinda' UnicodeRanges='65539 0 0 0' CharSets='1 0' Panos='1 1 6 0 1 1 1 1 1 1' Flags='325'/><FaceName ID='12' Name='Shruti' UnicodeRanges='262144 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='13' Name='Mangal' UnicodeRanges='32768 0 0 0' CharSets='0 0' Panos='0 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='14' Name='Tunga' UnicodeRanges='4194304 0 0 0' CharSets='0 0' Panos='0 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='15' Name='Sendnya' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='16' Name='Raavi' UnicodeRanges='131072 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='17' Name='Dhenu' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='18' Name='Latha' UnicodeRanges='1048576 0 0 0' CharSets='0 0' Panos='2 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='19' Name='Gautami' UnicodeRanges='2097152 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='20' Name='Cordia New' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='21' Name='MS Farsi' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='22' Name='Gulim' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='23' Name='Times New Roman' UnicodeRanges='31367 -2147483648 8 0' CharSets='1073742335 -65536' Panos='2 2 6 3 5 4 5 2 3 4' Flags='325'/></FaceNames><StyleSheets><StyleSheet ID='0' NameU='No Style' Name='No Style'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.01</LineWeight><LineColor>0</LineColor><LinePattern>1</LinePattern><Rounding>0</Rounding><EndArrowSize>2</EndArrowSize><BeginArrow>0</BeginArrow><EndArrow>0</EndArrow><LineCap>0</LineCap><BeginArrowSize>2</BeginArrowSize><LineColorTrans>0</LineColorTrans></Line><Fill><FillForegnd>1</FillForegnd><FillBkgnd>0</FillBkgnd><FillPattern>1</FillPattern><ShdwForegnd>0</ShdwForegnd><ShdwBkgnd>1</ShdwBkgnd><ShdwPattern>0</ShdwPattern><FillForegndTrans>0</FillForegndTrans><FillBkgndTrans>0</FillBkgndTrans><ShdwForegndTrans>0</ShdwForegndTrans><ShdwBkgndTrans>0</ShdwBkgndTrans><ShapeShdwType>0</ShapeShdwType><ShapeShdwOffsetX>0</ShapeShdwOffsetX><ShapeShdwOffsetY>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>1</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop>0.5</DefaultTabStop><TextDirection>0</TextDirection><TextBkgndTrans>0</TextBkgndTrans></TextBlock><Protection><LockWidth>0</LockWidth><LockHeight>0</LockHeight><LockMoveX>0</LockMoveX><LockMoveY>0</LockMoveY><LockAspect>0</LockAspect><LockDelete>0</LockDelete><LockBegin>0</LockBegin><LockEnd>0</LockEnd><LockRotate>0</LockRotate><LockCrop>0</LockCrop><LockVtxEdit>0</LockVtxEdit><LockTextEdit>0...
[truncated message content] |
|
From: <got...@us...> - 2009-01-06 21:16:32
|
Revision: 154
http://scstudio.svn.sourceforge.net/scstudio/?rev=154&view=rev
Author: gotthardp
Date: 2009-01-06 21:16:29 +0000 (Tue, 06 Jan 2009)
Log Message:
-----------
- Fixed DLL registration path.
- Added explanation when no algorithms are executed.
Modified Paths:
--------------
trunk/src/view/visio/addon/document.cpp
trunk/src/view/visio/scstudio.nsi
Modified: trunk/src/view/visio/addon/document.cpp
===================================================================
--- trunk/src/view/visio/addon/document.cpp 2009-01-06 19:49:01 UTC (rev 153)
+++ trunk/src/view/visio/addon/document.cpp 2009-01-06 21:16:29 UTC (rev 154)
@@ -217,6 +217,8 @@
menuItem3->AddOnName = ADDON_NAME;
menuItem3->AddOnArgs = "/event=203";
menuItem3->BeginGroup = true;
+ // enable only if some formatters are available
+ menuItem3->Enabled = m_formatters.size() > 0;
vsoDocument->SetCustomMenus(vsoMenus);
}
@@ -240,6 +242,9 @@
SRChannelMapperPtr srm = SRChannelMapper::instance();
+ int satisfied_count = 0;
+ int violated_count = 0;
+
for(CheckerPtrList::const_iterator cpos = m_checkers.begin();
cpos != m_checkers.end(); cpos++)
{
@@ -253,11 +258,13 @@
{
m_reportView->Print(RS_ERROR, stringize()
<< (*cpos)->get_description() << " violated.");
+ violated_count++;
}
else
{
m_reportView->Print(RS_NOTICE, stringize()
<< (*cpos)->get_description() << " satisfied.");
+ satisfied_count++;
}
}
@@ -268,15 +275,23 @@
{
m_reportView->Print(RS_ERROR, stringize()
<< (*cpos)->get_description() << " violated.");
+ violated_count++;
}
else
{
m_reportView->Print(RS_NOTICE, stringize()
<< (*cpos)->get_description() << " satisfied.");
+ satisfied_count++;
}
}
}
+ if(satisfied_count == 0 && violated_count == 0)
+ {
+ m_reportView->Print(RS_NOTICE, stringize()
+ << "No verification algorithms applicable. No properties verified.");
+ }
+
return VAORC_SUCCESS;
}
else
Modified: trunk/src/view/visio/scstudio.nsi
===================================================================
--- trunk/src/view/visio/scstudio.nsi 2009-01-06 19:49:01 UTC (rev 153)
+++ trunk/src/view/visio/scstudio.nsi 2009-01-06 21:16:29 UTC (rev 154)
@@ -96,10 +96,10 @@
${AppendRegStr} ${VisioRegPath} "StencilPath" "$INSTDIR\stencils"
${AppendRegStr} ${VisioRegPath} "TemplatePath" "$INSTDIR\stencils"
; register modules
- WriteRegStr HKCU '${ModuleRegPath}' 'init_liveness' 'scliveness.dll'
- WriteRegStr HKCU '${ModuleRegPath}' 'init_order' 'scorder.dll'
- WriteRegStr HKCU '${ModuleRegPath}' 'init_race' 'scrace.dll'
- WriteRegStr HKCU '${ModuleRegPath}' 'init_z120' 'scZ120.dll'
+ WriteRegStr HKCU '${ModuleRegPath}' 'liveness' '$INSTDIR\bin\scliveness.dll'
+ WriteRegStr HKCU '${ModuleRegPath}' 'order' '$INSTDIR\bin\scorder.dll'
+ WriteRegStr HKCU '${ModuleRegPath}' 'race' '$INSTDIR\bin\scrace.dll'
+ WriteRegStr HKCU '${ModuleRegPath}' 'z120' '$INSTDIR\bin\scZ120.dll'
;Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <got...@us...> - 2009-01-08 23:16:25
|
Revision: 157
http://scstudio.svn.sourceforge.net/scstudio/?rev=157&view=rev
Author: gotthardp
Date: 2009-01-08 23:16:19 +0000 (Thu, 08 Jan 2009)
Log Message:
-----------
Minor improvements
- New button to "Open Referenced" page
- Fixed MSC general ordering stencils
- Fixed case-insensitivity related problems
- Added ABOUT box with version number (read from VSL resources)
Modified Paths:
--------------
trunk/src/view/visio/addon/addon.cpp
trunk/src/view/visio/addon/addon.h
trunk/src/view/visio/addon/dllmodule.cpp
trunk/src/view/visio/addon/dllmodule.h
trunk/src/view/visio/addon/dllmodule.rc
trunk/src/view/visio/addon/document.cpp
trunk/src/view/visio/addon/document.h
trunk/src/view/visio/addon/extract.cpp
trunk/src/view/visio/addon/extract.h
trunk/src/view/visio/addon/scstudio.vcproj
trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx
trunk/src/view/visio/stencils/Sequence Chart Studio/HMSC.vsx
Modified: trunk/src/view/visio/addon/addon.cpp
===================================================================
--- trunk/src/view/visio/addon/addon.cpp 2009-01-08 17:02:30 UTC (rev 156)
+++ trunk/src/view/visio/addon/addon.cpp 2009-01-08 23:16:19 UTC (rev 157)
@@ -47,11 +47,24 @@
const short visEvtConnectionsDeleted = Visio::visEvtDel | Visio::visEvtConnect;
CStudioAddon::CStudioAddon(LPCTSTR pName, UINT uIDLocalName)
- : VAddon(VAO_AOATTS_ISACTION, VAO_ENABLEALWAYS, 0, 0, pName, uIDLocalName)
+ : VAddon(VAO_AOATTS_ISACTION | VAO_AOATTS_HASABOUT, VAO_ENABLEALWAYS, 0, 0, pName, uIDLocalName)
{
m_pIAddonSink = NULL;
};
+VAORC CStudioAddon::About(LPVAOV2LSTRUCT pV2L)
+{
+ TRACE("CStudioAddon::About() called");
+
+ std::wstringstream message;
+ message
+ << GetVersionInfo(_T("\\StringFileInfo\\000004e4\\ProductName"))
+ << ", version " << GetVersionInfo(_T("\\StringFileInfo\\000004e4\\ProductVersion"));
+
+ MessageBox(GetActiveWindow(), message.str().c_str(), _T("About"), MB_OK);
+ return VAORC_SUCCESS;
+}
+
const int _FILE_PATH_SIZE = _MAX_PATH * 4;
_bstr_t GetVisioModulePath()
@@ -205,6 +218,7 @@
int iDocumentIndex = 0;
int iPageIndex = 0;
_bstr_t sShape;
+ _bstr_t sShapeU;
while(args.Next())
{
@@ -231,6 +245,9 @@
case OPT_SHAPE:
sShape = args.OptionArg();
break;
+ case OPT_SHAPEU:
+ sShapeU = args.OptionArg();
+ break;
default:
TRACE("CStudioAddon::Run() unexpected argument id=" << args.OptionId());
break;
@@ -252,6 +269,9 @@
case 100:
TRACE("CStudioAddon::Run() stencil event 'OnDrop'");
return VAORC_SUCCESS;
+ case 101:
+ TRACE("CStudioAddon::Run() reference action 'Open Reference'");
+ return pDocumentMonitor->OnOpenReference(iDocumentIndex, iPageIndex, sShapeU);
case 201:
TRACE("CStudioAddon::Run() menu item 'Check--Windows--Verification Report'");
@@ -385,8 +405,7 @@
if(vsoEvent == NULL || vsoEvent->Action != visActCodeRunAddon)
continue;
- _bstr_t aa = vsoEvent->Target;
- if(vsoEvent != NULL && _tcscmp(vsoEvent->Target, _T(ADDON_NAME)) == 0)
+ if(vsoEvent != NULL && _tcsicmp(vsoEvent->Target, _T(ADDON_NAME)) == 0)
{
if(vsoEvent->Event == visEvtCodeDocCreate)
vsoDocumentCreateEvent = vsoEvent;
Modified: trunk/src/view/visio/addon/addon.h
===================================================================
--- trunk/src/view/visio/addon/addon.h 2009-01-08 17:02:30 UTC (rev 156)
+++ trunk/src/view/visio/addon/addon.h 2009-01-08 23:16:19 UTC (rev 157)
@@ -33,6 +33,7 @@
{
public:
CStudioAddon(LPCTSTR pNameU, UINT uIDLocalName);
+ virtual VAORC About(LPVAOV2LSTRUCT pV2L);
virtual VAORC Run(LPVAOV2LSTRUCT pV2L);
virtual VAORC Unload(WORD wParam, LPVOID p);
Modified: trunk/src/view/visio/addon/dllmodule.cpp
===================================================================
--- trunk/src/view/visio/addon/dllmodule.cpp 2009-01-08 17:02:30 UTC (rev 156)
+++ trunk/src/view/visio/addon/dllmodule.cpp 2009-01-08 23:16:19 UTC (rev 157)
@@ -48,6 +48,35 @@
return _bstr_t(szBuffer);
}
+std::wstring GetVersionInfo(const LPWSTR block)
+{
+ std::wstring csRet;
+ HMODULE hLib = ATL::_AtlBaseModule.GetModuleInstance();
+
+ HRSRC hVersion = FindResource(hLib, MAKEINTRESOURCE(VS_VERSION_INFO), RT_VERSION);
+ if(hVersion != NULL)
+ {
+ HGLOBAL hGlobal = LoadResource(hLib, hVersion);
+ if(hGlobal != NULL)
+ {
+ LPVOID versionInfo = LockResource(hGlobal);
+ if(versionInfo != NULL)
+ {
+ DWORD vLen;
+ TCHAR *retbuf = NULL;
+
+ if(VerQueryValueW(versionInfo, block, (LPVOID*)&retbuf, (UINT *)&vLen))
+ csRet = retbuf;
+ }
+ }
+
+ UnlockResource(hGlobal);
+ FreeResource(hGlobal);
+ }
+
+ return csRet;
+}
+
#ifdef _MANAGED
#pragma managed(push, off)
#endif
Modified: trunk/src/view/visio/addon/dllmodule.h
===================================================================
--- trunk/src/view/visio/addon/dllmodule.h 2009-01-08 17:02:30 UTC (rev 156)
+++ trunk/src/view/visio/addon/dllmodule.h 2009-01-08 23:16:19 UTC (rev 157)
@@ -17,7 +17,9 @@
*/
#pragma once
+#include <string>
_bstr_t LoadStringResource(UINT uiID);
+std::wstring GetVersionInfo(const LPWSTR block);
// $Id$
Modified: trunk/src/view/visio/addon/dllmodule.rc
===================================================================
--- trunk/src/view/visio/addon/dllmodule.rc 2009-01-08 17:02:30 UTC (rev 156)
+++ trunk/src/view/visio/addon/dllmodule.rc 2009-01-08 23:16:19 UTC (rev 157)
@@ -53,8 +53,8 @@
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,0,0,1
- PRODUCTVERSION 1,0,0,1
+ FILEVERSION 0,1,2,0
+ PRODUCTVERSION 0,1,2,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -67,21 +67,21 @@
BEGIN
BLOCK "StringFileInfo"
BEGIN
- BLOCK "080004e4"
+ BLOCK "000004e4"
BEGIN
VALUE "CompanyName", "Masaryk University Brno"
VALUE "FileDescription", "Microsoft Visio add-on for design and verification of Message Sequence Charts (MSC)."
- VALUE "FileVersion", "1.0.0.1"
+ VALUE "FileVersion", "0.1.2"
VALUE "InternalName", "scstudio.vsl"
VALUE "LegalCopyright", "(c) Petr Gotthard. All rights reserved."
VALUE "OriginalFilename", "scstudio.vsl"
VALUE "ProductName", "Sequence Chart Studio"
- VALUE "ProductVersion", "1.0.0.1"
+ VALUE "ProductVersion", "0.1.2"
END
END
BLOCK "VarFileInfo"
BEGIN
- VALUE "Translation", 0x800, 1252
+ VALUE "Translation", 0x0, 1252
END
END
Modified: trunk/src/view/visio/addon/document.cpp
===================================================================
--- trunk/src/view/visio/addon/document.cpp 2009-01-08 17:02:30 UTC (rev 156)
+++ trunk/src/view/visio/addon/document.cpp 2009-01-08 23:16:19 UTC (rev 157)
@@ -171,6 +171,31 @@
return 0;
}
+VAORC CDocumentMonitor::OnOpenReference(int iDocumentIndex, int iPageIndex, _bstr_t sShapeU)
+{
+ Visio::IVDocumentPtr vsoDocument = m_vsoApp->Documents->Item[iDocumentIndex];
+ Visio::IVShapePtr vsoShape = vsoDocument->Pages->Item[iPageIndex]->Shapes->ItemU[sShapeU];
+
+ for(int i = 1; i <= vsoDocument->Pages->Count; i++)
+ {
+ Visio::IVPagePtr page = vsoDocument->Pages->Item[i];
+ if(_tcsicmp(page->Name, vsoShape->Text) == 0)
+ {
+ // switch to the found page
+ m_vsoApp->ActiveWindow->Page = (IDispatch *)page;
+ return VAORC_SUCCESS;
+ }
+ }
+
+ // create new page
+ Visio::IVPagePtr page = vsoDocument->Pages->Add();
+ page->Name = vsoShape->Text;
+ // siwtch to the new page
+ m_vsoApp->ActiveWindow->Page = (IDispatch *)page;
+
+ return VAORC_FAILURE;
+}
+
void CDocumentMonitor::InitMenu(Visio::IVApplicationPtr vsoApp)
{
Visio::IVUIObjectPtr vsoMenus = NULL;
Modified: trunk/src/view/visio/addon/document.h
===================================================================
--- trunk/src/view/visio/addon/document.h 2009-01-08 17:02:30 UTC (rev 156)
+++ trunk/src/view/visio/addon/document.h 2009-01-08 23:16:19 UTC (rev 157)
@@ -32,6 +32,8 @@
Visio::IVApplicationPtr vsoApp, Visio::IVDocumentPtr vsoDocument);
virtual ~CDocumentMonitor();
+ VAORC OnOpenReference(int iDocumentIndex, int iPageIndex, _bstr_t sShapeU);
+
void InitMenu(Visio::IVApplicationPtr vsoApp);
VAORC OnMenuRun(Visio::IVApplicationPtr vsoApp);
Modified: trunk/src/view/visio/addon/extract.cpp
===================================================================
--- trunk/src/view/visio/addon/extract.cpp 2009-01-08 17:02:30 UTC (rev 156)
+++ trunk/src/view/visio/addon/extract.cpp 2009-01-08 23:16:19 UTC (rev 157)
@@ -43,7 +43,7 @@
MscPtr CDrawingExtractor::extract_msc(Visio::IVDocumentPtr vsoDocument, const char* name)
{
- std::map<std::string,MscPtr>::iterator mpos = m_msc_cache.find(name);
+ MscCacheMap::iterator mpos = m_msc_cache.find(name);
if(mpos != m_msc_cache.end())
{
TRACE("extract_msc() drawing found in cache");
@@ -55,7 +55,7 @@
{
Visio::IVPagePtr page = vsoDocument->Pages->Item[i];
- if(strcmp(page->Name, name) == 0)
+ if(stricmp(page->Name, name) == 0)
return extract_msc(page);
}
@@ -95,13 +95,13 @@
{NULL, ST_UNKNOWN}
};
- if(_tcscmp(cell->RowName, _T("mscSymbol")) == 0)
+ if(_tcsicmp(cell->RowName, _T("mscSymbol")) == 0)
{
_bstr_t symbol_name = cell->ResultStr[visNoCast];
for(SymbolsStruct *pos = symbols; pos->name != NULL; pos++)
{
- if(_tcscmp(symbol_name, pos->name) == 0)
+ if(_tcsicmp(symbol_name, pos->name) == 0)
return pos->type;
}
Modified: trunk/src/view/visio/addon/extract.h
===================================================================
--- trunk/src/view/visio/addon/extract.h 2009-01-08 17:02:30 UTC (rev 156)
+++ trunk/src/view/visio/addon/extract.h 2009-01-08 23:16:19 UTC (rev 157)
@@ -23,6 +23,21 @@
#include <Vaddon.h>
#include "data/msc.h"
+struct nocase_comparator: public std::binary_function<std::string, std::string, bool>
+{
+ struct nocase_compare: public std::binary_function<unsigned char, unsigned char, bool>
+ {
+ bool operator() (const unsigned char& c1, const unsigned char& c2) const
+ { return tolower(c1) < tolower(c2); };
+ };
+
+ bool operator() (const std::string& s1, const std::string& s2) const
+ {
+ return std::lexicographical_compare(
+ s1.begin(), s1.end(), s2.begin(), s2.end(), nocase_compare());
+ }
+};
+
class CDrawingExtractor
{
public:
@@ -54,7 +69,9 @@
m_reporter->Print(RS_WARNING, message, references);
}
- std::map<std::string,MscPtr> m_msc_cache;
+ // note: names must be case insensitive as Visio changes page NAME-->Name
+ typedef std::map<std::string,MscPtr,nocase_comparator> MscCacheMap;
+ MscCacheMap m_msc_cache;
enum TShapeType
{
Modified: trunk/src/view/visio/addon/scstudio.vcproj
===================================================================
--- trunk/src/view/visio/addon/scstudio.vcproj 2009-01-08 17:02:30 UTC (rev 156)
+++ trunk/src/view/visio/addon/scstudio.vcproj 2009-01-08 23:16:19 UTC (rev 157)
@@ -38,7 +38,7 @@
Name="VCLinkerTool"
RegisterOutput="TRUE"
IgnoreImportLibrary="TRUE"
- AdditionalDependencies="scmsc.lib"
+ AdditionalDependencies="version.lib scmsc.lib"
OutputFile="$(OutDir)\$(ProjectName).vsl"
LinkIncremental="2"
AdditionalLibraryDirectories="..\..\..\..\$(OutDir)"
@@ -109,7 +109,7 @@
Name="VCLinkerTool"
RegisterOutput="TRUE"
IgnoreImportLibrary="TRUE"
- AdditionalDependencies="scmsc.lib"
+ AdditionalDependencies="version.lib scmsc.lib"
OutputFile="$(OutDir)\$(ProjectName).vsl"
LinkIncremental="1"
AdditionalLibraryDirectories="..\..\..\..\$(OutDir)"
Modified: trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx
===================================================================
--- trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx 2009-01-08 17:02:30 UTC (rev 156)
+++ trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx 2009-01-08 23:16:19 UTC (rev 157)
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8' ?>
-<VisioDocument key='08AA4C73B33022842A62B6C7206AA7AB4F89454139CBC424314877EFBD12CC86BE4838E1447E0B47346F9F5A7D08B5D8A424C143121289CDF8A69C5FE8A6388C' start='190' xmlns='http://schemas.microsoft.com/visio/2003/core' metric='0' DocLangID='1033' buildnum='8161' version='11.0' xml:space='preserve'><DocumentProperties><Title>Basic MSC</Title><Creator>Petr Gotthard</Creator><Company>Brno</Company><BuildNumberCreated>738205665</BuildNumberCreated><BuildNumberEdited>738205665</BuildNumberEdited><TimeCreated>2008-12-14T11:32:13</TimeCreated><TimeSaved>2009-01-02T12:07:58</TimeSaved><TimeEdited>2009-01-02T12:07:57</TimeEdited><TimePrinted>2008-12-14T11:32:13</TimePrinted></DocumentProperties><DocumentSettings TopPage='0' DefaultTextStyle='3' DefaultLineStyle='3' DefaultFillStyle='3' DefaultGuideStyle='4'><GlueSettings>9</GlueSettings><SnapSettings>65847</SnapSettings><SnapExtensions>34</SnapExtensions><DynamicGridEnabled>0</DynamicGridEnabled><ProtectStyles>0</ProtectStyles><ProtectShapes>0</ProtectShapes><ProtectMasters>0</ProtectMasters><ProtectBkgnds>0</ProtectBkgnds></DocumentSettings><Colors><ColorEntry IX='0' RGB='#000000'/><ColorEntry IX='1' RGB='#FFFFFF'/><ColorEntry IX='2' RGB='#FF0000'/><ColorEntry IX='3' RGB='#00FF00'/><ColorEntry IX='4' RGB='#0000FF'/><ColorEntry IX='5' RGB='#FFFF00'/><ColorEntry IX='6' RGB='#FF00FF'/><ColorEntry IX='7' RGB='#00FFFF'/><ColorEntry IX='8' RGB='#800000'/><ColorEntry IX='9' RGB='#008000'/><ColorEntry IX='10' RGB='#000080'/><ColorEntry IX='11' RGB='#808000'/><ColorEntry IX='12' RGB='#800080'/><ColorEntry IX='13' RGB='#008080'/><ColorEntry IX='14' RGB='#C0C0C0'/><ColorEntry IX='15' RGB='#E6E6E6'/><ColorEntry IX='16' RGB='#CDCDCD'/><ColorEntry IX='17' RGB='#B3B3B3'/><ColorEntry IX='18' RGB='#9A9A9A'/><ColorEntry IX='19' RGB='#808080'/><ColorEntry IX='20' RGB='#666666'/><ColorEntry IX='21' RGB='#4D4D4D'/><ColorEntry IX='22' RGB='#333333'/><ColorEntry IX='23' RGB='#1A1A1A'/></Colors><FaceNames><FaceName ID='1' Name='Arial Unicode MS' UnicodeRanges='-1 -369098753 63 0' CharSets='1614741759 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='357'/><FaceName ID='2' Name='Symbol' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 5 1 2 1 7 6 2 5 7' Flags='261'/><FaceName ID='3' Name='Wingdings' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 0 0 0 0 0 0 0 0 0' Flags='261'/><FaceName ID='4' Name='Arial' UnicodeRanges='31367 -2147483648 8 0' CharSets='1073742335 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='325'/><FaceName ID='5' Name='SimSun' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='6' Name='PMingLiU' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='7' Name='MS PGothic' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='8' Name='Dotum' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='9' Name='Sylfaen' UnicodeRanges='67110535 0 0 0' CharSets='536871071 0' Panos='1 10 5 2 5 3 6 3 3 3' Flags='325'/><FaceName ID='10' Name='Estrangelo Edessa' UnicodeRanges='-2147459008 0 128 0' CharSets='0 0' Panos='3 8 6 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='11' Name='Vrinda' UnicodeRanges='65539 0 0 0' CharSets='1 0' Panos='1 1 6 0 1 1 1 1 1 1' Flags='325'/><FaceName ID='12' Name='Shruti' UnicodeRanges='262144 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='13' Name='Mangal' UnicodeRanges='32768 0 0 0' CharSets='0 0' Panos='0 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='14' Name='Tunga' UnicodeRanges='4194304 0 0 0' CharSets='0 0' Panos='0 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='15' Name='Sendnya' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='16' Name='Raavi' UnicodeRanges='131072 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='17' Name='Dhenu' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='18' Name='Latha' UnicodeRanges='1048576 0 0 0' CharSets='0 0' Panos='2 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='19' Name='Gautami' UnicodeRanges='2097152 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='20' Name='Cordia New' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='21' Name='MS Farsi' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='22' Name='Gulim' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='23' Name='Times New Roman' UnicodeRanges='31367 -2147483648 8 0' CharSets='1073742335 -65536' Panos='2 2 6 3 5 4 5 2 3 4' Flags='325'/></FaceNames><StyleSheets><StyleSheet ID='0' NameU='No Style' Name='No Style'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.01</LineWeight><LineColor>0</LineColor><LinePattern>1</LinePattern><Rounding>0</Rounding><EndArrowSize>2</EndArrowSize><BeginArrow>0</BeginArrow><EndArrow>0</EndArrow><LineCap>0</LineCap><BeginArrowSize>2</BeginArrowSize><LineColorTrans>0</LineColorTrans></Line><Fill><FillForegnd>1</FillForegnd><FillBkgnd>0</FillBkgnd><FillPattern>1</FillPattern><ShdwForegnd>0</ShdwForegnd><ShdwBkgnd>1</ShdwBkgnd><ShdwPattern>0</ShdwPattern><FillForegndTrans>0</FillForegndTrans><FillBkgndTrans>0</FillBkgndTrans><ShdwForegndTrans>0</ShdwForegndTrans><ShdwBkgndTrans>0</ShdwBkgndTrans><ShapeShdwType>0</ShapeShdwType><ShapeShdwOffsetX>0</ShapeShdwOffsetX><ShapeShdwOffsetY>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>1</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop>0.5</DefaultTabStop><TextDirection>0</TextDirection><TextBkgndTrans>0</TextBkgndTrans></TextBlock><Protection><LockWidth>0</LockWidth><LockHeight>0</LockHeight><LockMoveX>0</LockMoveX><LockMoveY>0</LockMoveY><LockAspect>0</LockAspect><LockDelete>0</LockDelete><LockBegin>0</LockBegin><LockEnd>0</LockEnd><LockRotate>0</LockRotate><LockCrop>0</LockCrop><LockVtxEdit>0</LockVtxEdit><LockTextEdit>0</LockTextEdit><LockFormat>0</LockFormat><LockGroup>0</LockGroup><LockCalcWH>0</LockCalcWH><LockSelect>0</LockSelect><LockCustProp>0</LockCustProp></Protection><Misc><NoObjHandles>0</NoObjHandles><NonPrinting>0</NonPrinting><NoCtlHandles>0</NoCtlHandles><NoAlignBox>0</NoAlignBox><UpdateAlignBox>0</UpdateAlignBox><HideText>0</HideText><DynFeedback>0</DynFeedback><GlueType>0</GlueType><WalkPreference>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType>0</ObjType><Comment V='null'/><IsDropSource>0</IsDropSource><NoLiveDynamics>0</NoLiveDynamics><LocalizeMerge>0</LocalizeMerge><Calendar>0</Calendar><LangID>1033</LangID><ShapeKeywords V='null'/><DropOnPageScale>1</DropOnPageScale></Misc><Event><TheData F='No Formula'>0</TheData><TheText F='No Formula'>0</TheText><EventDblClick F='No Formula'>0</EventDblClick><EventXFMod F='No Formula'>0</EventXFMod><EventDrop F='No Formula'>0</EventDrop></Event><Help><HelpTopic V='null'/><Copyright V='null'/></Help><LayerMem><LayerMember V='null'/></LayerMem><RulerGrid><XRulerDensity>32</XRulerDensity><YRulerDensity>32</YRulerDensity><XRulerOrigin>0</XRulerOrigin><YRulerOrigin>0</YRulerOrigin><XGridDensity>8</XGridDensity><YGridDensity>8</YGridDensity><XGridSpacing>0</XGridSpacing><YGridSpacing>0</YGridSpacing><XGridOrigin>0</XGridOrigin><YGridOrigin>0</YGridOrigin></RulerGrid><Image><Gamma>1</Gamma><Contrast>0.5</Contrast><Brightness>0.5</Brightness><Sharpen>0</Sharpen><Blur>0</Blur><Denoise>0</Denoise><Transparency>0</Transparency></Image><Group><SelectMode>1</SelectMode><DisplayMode>2</DisplayMode><IsDropTarget>0</IsDropTarget><IsSnapTarget>1</IsSnapTarget><IsTextEditTarget>1</IsTextEditTarget><DontMoveChildren>0</DontMoveChildren></Group><Layout><ShapePermeableX>0</ShapePermeableX><ShapePermeableY>0</ShapePermeableY><ShapePermeablePlace>0</ShapePermeablePlace><ShapeFixedCode>0</ShapeFixedCode><ShapePlowCode>0</ShapePlowCode><ShapeRouteStyle>0</ShapeRouteStyle><ConFixedCode>0</ConFixedCode><ConLineJumpCode>0</ConLineJumpCode><ConLineJumpStyle>0</ConLineJumpStyle><ConLineJumpDirX>0</ConLineJumpDirX><ConLineJumpDirY>0</ConLineJumpDirY><ShapePlaceFlip>0</ShapePlaceFlip><ConLineRouteExt>0</ConLineRouteExt><ShapeSplit>0</ShapeSplit><ShapeSplittable>0</ShapeSplittable></Layout><PageLayout><ResizePage>0</ResizePage><EnableGrid>0</EnableGrid><DynamicsOff>0</DynamicsOff><CtrlAsInput>0</CtrlAsInput><PlaceStyle>0</PlaceStyle><RouteStyle>0</RouteStyle><PlaceDepth>0</PlaceDepth><PlowCode>0</PlowCode><LineJumpCode>1</LineJumpCode><LineJumpStyle>0</LineJumpStyle><PageLineJumpDirX>0</PageLineJumpDirX><PageLineJumpDirY>0</PageLineJumpDirY><LineToNodeX>0.125</LineToNodeX><LineToNodeY>0.125</LineToNodeY><BlockSizeX>0.25</BlockSizeX><BlockSizeY>0.25</BlockSizeY><AvenueSizeX>0.375</AvenueSizeX><AvenueSizeY>0.375</AvenueSizeY><LineToLineX>0.125</LineToLineX><LineToLineY>0.125</LineToLineY><LineJumpFactorX>0.66666666666667</LineJumpFactorX><LineJumpFactorY>0.66666666666667</LineJumpFactorY><LineAdjustFrom>0</LineAdjustFrom><LineAdjustTo>0</LineAdjustTo><PlaceFlip>0</PlaceFlip><LineRouteExt>0</LineRouteExt><PageShapeSplit>0</PageShapeSplit></PageLayout><PrintProps><PageLeftMargin>0.25</PageLeftMargin><PageRightMargin>0.25</PageRightMargin><PageTopMargin>0.25</PageTopMargin><PageBottomMargin>0.25</PageBottomMargin><ScaleX>1</ScaleX><ScaleY>1</ScaleY><PagesX>1</PagesX><PagesY>1</PagesY><CenterX>0</CenterX><CenterY>0</CenterY><OnPage>0</OnPage><PrintGrid>0</PrintGrid><PrintPageOrientation>1</PrintPageOrientation><PaperKind>1</PaperKind><PaperSource>7</PaperSource></PrintProps><PageProps><PageWidth Unit='NUM' F='No Formula'>0</PageWidth><PageHeight Unit='NUM' F='No Formula'>0</PageHeight><ShdwOffsetX Unit='NUM' F='No Formula'>0</ShdwOffsetX><ShdwOffsetY Unit='NUM' F='No Formula'>0</ShdwOffsetY><PageScale F='No Formula'>0</PageScale><DrawingScale F='No Formula'>0</DrawingScale><DrawingSizeType F='No Formula'>0</DrawingSizeType><DrawingScaleType F='No Formula'>0</DrawingScaleType><InhibitSnap F='No Formula'>0</InhibitSnap><UIVisibility F='No Formula'>0</UIVisibility><ShdwType F='No Formula'>0</ShdwType><ShdwObliqueAngle Unit='NUM' F='No Formula'>0</ShdwObliqueAngle><ShdwScaleFactor F='No Formula'>0</ShdwScaleFactor></PageProps><Char IX='0'><Font>4</Font><Color>0</Color><Style>0</Style><Case>0</Case><Pos>0</Pos><FontScale>1</FontScale><Size>0.1666666666666667</Size><DblUnderline>0</DblUnderline><Overline>0</Overline><Strikethru>0</Strikethru><Highlight>0</Highlight><DoubleStrikethrough>0</DoubleStrikethrough><RTLText>0</RTLText><UseVertical>0</UseVertical><Letterspace>0</Letterspace><ColorTrans>0</ColorTrans><AsianFont>0</AsianFont><ComplexScriptFont>0</ComplexScriptFont><LocalizeFont>0</LocalizeFont><ComplexScriptSize>-1</ComplexScriptSize><LangID>1033</LangID></Char><Para IX='0'><IndFirst>0</IndFirst><IndLeft>0</IndLeft><IndRight>0</IndRight><SpLine>-1.2</SpLine><SpBefore>0</SpBefore><SpAfter>0</SpAfter><HorzAlign>1</HorzAlign><Bullet>0</Bullet><BulletStr V='null'/><BulletFont>0</BulletFont><LocalizeBulletFont>0</LocalizeBulletFont><BulletFontSize>-1</BulletFontSize><TextPosAfterBullet>0</TextPosAfterBullet><Flags>0</Flags></Para><Tabs IX='0'/></StyleSheet><StyleSheet ID='1' NameU='Text Only' Name='Text Only' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern>0</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>0</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Para IX='0'><IndFirst F='Inh'>0</IndFirst><IndLeft F='Inh'>0</IndLeft><IndRight F='Inh'>0</IndRight><SpLine F='Inh'>-1.2</SpLine><SpBefore F='Inh'>0</SpBefore><SpAfter F='Inh'>0</SpAfter><HorzAlign>0</HorzAlign><Bullet F='Inh'>0</Bullet><BulletStr F='Inh'/><BulletFont F='Inh'>0</BulletFont><LocalizeBulletFont F='Inh'>0</LocalizeBulletFont><BulletFontSize F='Inh'>-1</BulletFontSize><TextPosAfterBullet F='Inh'>0</TextPosAfterBullet><Flags F='Inh'>0</Flags></Para></StyleSheet><StyleSheet ID='2' NameU='None' Name='None' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern>0</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill></StyleSheet><StyleSheet ID='3' NameU='Normal' Name='Normal' LineStyle='0' FillStyle='0' TextStyle='0'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><TextBlock><LeftMargin Unit='PT'>0.05555555555555555</LeftMargin><RightMargin Unit='PT'>0.05555555555555555</RightMargin><TopMargin Unit='PT'>0.05555555555555555</TopMargin><BottomMargin Unit='PT'>0.05555555555555555</BottomMargin><VerticalAlign F='Inh'>1</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock></StyleSheet><StyleSheet ID='4' NameU='Guide' Name='Guide' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight Unit='PT'>0</LineWeight><LineColor>4</LineColor><LinePattern>23</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin Unit='PT' F='Inh'>0.05555555555555555</LeftMargin><RightMargin Unit='PT' F='Inh'>0.05555555555555555</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>2</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Misc><NoObjHandles F='Inh'>0</NoObjHandles><NonPrinting>1</NonPrinting><NoCtlHandles F='Inh'>0</NoCtlHandles><NoAlignBox F='Inh'>0</NoAlignBox><UpdateAlignBox F='Inh'>0</UpdateAlignBox><HideText F='Inh'>0</HideText><DynFeedback F='Inh'>0</DynFeedback><GlueType F='Inh'>0</GlueType><WalkPreference F='Inh'>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType F='Inh'>0</ObjType><Comm...
[truncated message content] |
|
From: <got...@us...> - 2009-01-31 17:36:02
|
Revision: 180
http://scstudio.svn.sourceforge.net/scstudio/?rev=180&view=rev
Author: gotthardp
Date: 2009-01-31 17:35:56 +0000 (Sat, 31 Jan 2009)
Log Message:
-----------
Fixed nasty unknown error in HMSC stencils.
Modified Paths:
--------------
trunk/src/view/visio/addon/visualize.cpp
trunk/src/view/visio/stencils/Sequence Chart Studio/HMSC.vsx
Modified: trunk/src/view/visio/addon/visualize.cpp
===================================================================
--- trunk/src/view/visio/addon/visualize.cpp 2009-01-31 16:35:08 UTC (rev 179)
+++ trunk/src/view/visio/addon/visualize.cpp 2009-01-31 17:35:56 UTC (rev 180)
@@ -19,6 +19,7 @@
#include "stdafx.h"
#include "document.h"
#include "visualize.h"
+#include "errors.h"
#include <math.h>
#include <Visconst.h>
@@ -27,22 +28,29 @@
{
m_vsoApp = vsoApp;
- Visio::IVDocumentPtr bmsc_stencil = vsoApp->Documents->Item[BMSC_STENCIL_NAME];
- m_instance_master = bmsc_stencil->Masters->Item["Line Instance"];
- m_coregion_master = bmsc_stencil->Masters->Item["Coregion Box"];
- m_message_master = bmsc_stencil->Masters->Item["Message (Right)"];
- m_lost_message_master = bmsc_stencil->Masters->Item["Lost Message"];
- m_found_message_master = bmsc_stencil->Masters->Item["Found Message"];
- m_ordering_side_side_master = bmsc_stencil->Masters->Item["Ordering Side-Side"];
- m_ordering_sides_master = bmsc_stencil->Masters->Item["Ordering Sides"];
- m_ordering_arrow_master = bmsc_stencil->Masters->Item["Ordering Arrow"];
+ try
+ {
+ Visio::IVDocumentPtr bmsc_stencil = vsoApp->Documents->Item[BMSC_STENCIL_NAME];
+ m_instance_master = bmsc_stencil->Masters->Item["Line Instance"];
+ m_coregion_master = bmsc_stencil->Masters->Item["Coregion Box"];
+ m_message_master = bmsc_stencil->Masters->Item["Message (Right)"];
+ m_lost_message_master = bmsc_stencil->Masters->Item["Lost Message"];
+ m_found_message_master = bmsc_stencil->Masters->Item["Found Message"];
+ m_ordering_side_side_master = bmsc_stencil->Masters->Item["Ordering Side-Side"];
+ m_ordering_sides_master = bmsc_stencil->Masters->Item["Ordering Sides"];
+ m_ordering_arrow_master = bmsc_stencil->Masters->Item["Ordering Arrow"];
- Visio::IVDocumentPtr hmsc_stencil = vsoApp->Documents->Item[HMSC_STENCIL_NAME];
- m_start_symbol_master = hmsc_stencil->Masters->Item["Start Symbol"];
- m_end_symbol_master = hmsc_stencil->Masters->Item["End Symbol"];
- m_msc_reference_master = hmsc_stencil->Masters->Item["MSC Reference"];
- m_connection_point_master = hmsc_stencil->Masters->Item["Connection Point"];
- m_connection_arrow_master = hmsc_stencil->Masters->Item["Connection Arrow"];
+ Visio::IVDocumentPtr hmsc_stencil = vsoApp->Documents->Item[HMSC_STENCIL_NAME];
+ m_start_symbol_master = hmsc_stencil->Masters->Item["Start Symbol"];
+ m_end_symbol_master = hmsc_stencil->Masters->Item["End Symbol"];
+ m_msc_reference_master = hmsc_stencil->Masters->Item["MSC Reference"];
+ m_connection_point_master = hmsc_stencil->Masters->Item["Connection Point"];
+ m_connection_arrow_master = hmsc_stencil->Masters->Item["Connection Arrow"];
+ }
+ catch (_com_error&)
+ {
+ DisplayException(vsoApp, "Bad template or stencils. Visualization failed.", MB_OK);
+ }
}
void CDrawingVisualizer::visualize_msc(Visio::IVPagePtr vsoPage, const MscPtr& drawing)
Modified: trunk/src/view/visio/stencils/Sequence Chart Studio/HMSC.vsx
===================================================================
--- trunk/src/view/visio/stencils/Sequence Chart Studio/HMSC.vsx 2009-01-31 16:35:08 UTC (rev 179)
+++ trunk/src/view/visio/stencils/Sequence Chart Studio/HMSC.vsx 2009-01-31 17:35:56 UTC (rev 180)
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8' ?>
-<VisioDocument key='7DE80B023CB43B4258A183620977BE362541F799C49FC49FB3D49D6BD61735DD9EB7E6A0B1B98606F772E8D79865912F086DF8E51139BBF4441AB1A17553E5DD' start='190' xmlns='http://schemas.microsoft.com/visio/2003/core' metric='0' DocLangID='1029' buildnum='8161' version='11.0' xml:space='preserve'><DocumentProperties><Title>High-Level MSC</Title><Creator>Petr Gotthard</Creator><Company>Brno</Company><BuildNumberCreated>738205665</BuildNumberCreated><BuildNumberEdited>738205665</BuildNumberEdited><TimeCreated>2008-12-26T17:33:21</TimeCreated><TimeSaved>2009-01-07T22:38:49</TimeSaved><TimeEdited>2009-01-07T22:38:48</TimeEdited><TimePrinted>2008-12-26T17:33:21</TimePrinted></DocumentProperties><DocumentSettings TopPage='0' DefaultTextStyle='3' DefaultLineStyle='3' DefaultFillStyle='3' DefaultGuideStyle='4'><GlueSettings>9</GlueSettings><SnapSettings>65847</SnapSettings><SnapExtensions>34</SnapExtensions><DynamicGridEnabled>0</DynamicGridEnabled><ProtectStyles>0</ProtectStyles><ProtectShapes>0</ProtectShapes><ProtectMasters>0</ProtectMasters><ProtectBkgnds>0</ProtectBkgnds></DocumentSettings><Colors><ColorEntry IX='0' RGB='#000000'/><ColorEntry IX='1' RGB='#FFFFFF'/><ColorEntry IX='2' RGB='#FF0000'/><ColorEntry IX='3' RGB='#00FF00'/><ColorEntry IX='4' RGB='#0000FF'/><ColorEntry IX='5' RGB='#FFFF00'/><ColorEntry IX='6' RGB='#FF00FF'/><ColorEntry IX='7' RGB='#00FFFF'/><ColorEntry IX='8' RGB='#800000'/><ColorEntry IX='9' RGB='#008000'/><ColorEntry IX='10' RGB='#000080'/><ColorEntry IX='11' RGB='#808000'/><ColorEntry IX='12' RGB='#800080'/><ColorEntry IX='13' RGB='#008080'/><ColorEntry IX='14' RGB='#C0C0C0'/><ColorEntry IX='15' RGB='#E6E6E6'/><ColorEntry IX='16' RGB='#CDCDCD'/><ColorEntry IX='17' RGB='#B3B3B3'/><ColorEntry IX='18' RGB='#9A9A9A'/><ColorEntry IX='19' RGB='#808080'/><ColorEntry IX='20' RGB='#666666'/><ColorEntry IX='21' RGB='#4D4D4D'/><ColorEntry IX='22' RGB='#333333'/><ColorEntry IX='23' RGB='#1A1A1A'/></Colors><FaceNames><FaceName ID='1' Name='Arial Unicode MS' UnicodeRanges='-1 -369098753 63 0' CharSets='1614741759 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='357'/><FaceName ID='2' Name='Symbol' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 5 1 2 1 7 6 2 5 7' Flags='261'/><FaceName ID='3' Name='Wingdings' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 0 0 0 0 0 0 0 0 0' Flags='261'/><FaceName ID='4' Name='Arial' UnicodeRanges='31367 -2147483648 8 0' CharSets='1073742335 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='325'/><FaceName ID='5' Name='SimSun' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='6' Name='PMingLiU' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='7' Name='MS PGothic' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='8' Name='Dotum' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='9' Name='Sylfaen' UnicodeRanges='67110535 0 0 0' CharSets='536871071 0' Panos='1 10 5 2 5 3 6 3 3 3' Flags='325'/><FaceName ID='10' Name='Estrangelo Edessa' UnicodeRanges='-2147459008 0 128 0' CharSets='0 0' Panos='3 8 6 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='11' Name='Vrinda' UnicodeRanges='65539 0 0 0' CharSets='1 0' Panos='1 1 6 0 1 1 1 1 1 1' Flags='325'/><FaceName ID='12' Name='Shruti' UnicodeRanges='262144 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='13' Name='Mangal' UnicodeRanges='32768 0 0 0' CharSets='0 0' Panos='0 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='14' Name='Tunga' UnicodeRanges='4194304 0 0 0' CharSets='0 0' Panos='0 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='15' Name='Sendnya' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='16' Name='Raavi' UnicodeRanges='131072 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='17' Name='Dhenu' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='18' Name='Latha' UnicodeRanges='1048576 0 0 0' CharSets='0 0' Panos='2 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='19' Name='Gautami' UnicodeRanges='2097152 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='20' Name='Cordia New' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='21' Name='MS Farsi' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='22' Name='Gulim' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='23' Name='Times New Roman' UnicodeRanges='31367 -2147483648 8 0' CharSets='1073742335 -65536' Panos='2 2 6 3 5 4 5 2 3 4' Flags='325'/></FaceNames><StyleSheets><StyleSheet ID='0' NameU='No Style' Name='No Style'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.01</LineWeight><LineColor>0</LineColor><LinePattern>1</LinePattern><Rounding>0</Rounding><EndArrowSize>2</EndArrowSize><BeginArrow>0</BeginArrow><EndArrow>0</EndArrow><LineCap>0</LineCap><BeginArrowSize>2</BeginArrowSize><LineColorTrans>0</LineColorTrans></Line><Fill><FillForegnd>1</FillForegnd><FillBkgnd>0</FillBkgnd><FillPattern>1</FillPattern><ShdwForegnd>0</ShdwForegnd><ShdwBkgnd>1</ShdwBkgnd><ShdwPattern>0</ShdwPattern><FillForegndTrans>0</FillForegndTrans><FillBkgndTrans>0</FillBkgndTrans><ShdwForegndTrans>0</ShdwForegndTrans><ShdwBkgndTrans>0</ShdwBkgndTrans><ShapeShdwType>0</ShapeShdwType><ShapeShdwOffsetX>0</ShapeShdwOffsetX><ShapeShdwOffsetY>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>1</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop>0.5</DefaultTabStop><TextDirection>0</TextDirection><TextBkgndTrans>0</TextBkgndTrans></TextBlock><Protection><LockWidth>0</LockWidth><LockHeight>0</LockHeight><LockMoveX>0</LockMoveX><LockMoveY>0</LockMoveY><LockAspect>0</LockAspect><LockDelete>0</LockDelete><LockBegin>0</LockBegin><LockEnd>0</LockEnd><LockRotate>0</LockRotate><LockCrop>0</LockCrop><LockVtxEdit>0</LockVtxEdit><LockTextEdit>0</LockTextEdit><LockFormat>0</LockFormat><LockGroup>0</LockGroup><LockCalcWH>0</LockCalcWH><LockSelect>0</LockSelect><LockCustProp>0</LockCustProp></Protection><Misc><NoObjHandles>0</NoObjHandles><NonPrinting>0</NonPrinting><NoCtlHandles>0</NoCtlHandles><NoAlignBox>0</NoAlignBox><UpdateAlignBox>0</UpdateAlignBox><HideText>0</HideText><DynFeedback>0</DynFeedback><GlueType>0</GlueType><WalkPreference>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType>0</ObjType><Comment V='null'/><IsDropSource>0</IsDropSource><NoLiveDynamics>0</NoLiveDynamics><LocalizeMerge>0</LocalizeMerge><Calendar>0</Calendar><LangID>1029</LangID><ShapeKeywords V='null'/><DropOnPageScale>1</DropOnPageScale></Misc><Event><TheData F='No Formula'>0</TheData><TheText F='No Formula'>0</TheText><EventDblClick F='No Formula'>0</EventDblClick><EventXFMod F='No Formula'>0</EventXFMod><EventDrop F='No Formula'>0</EventDrop></Event><Help><HelpTopic V='null'/><Copyright V='null'/></Help><LayerMem><LayerMember V='null'/></LayerMem><RulerGrid><XRulerDensity>32</XRulerDensity><YRulerDensity>32</YRulerDensity><XRulerOrigin>0</XRulerOrigin><YRulerOrigin>0</YRulerOrigin><XGridDensity>8</XGridDensity><YGridDensity>8</YGridDensity><XGridSpacing>0</XGridSpacing><YGridSpacing>0</YGridSpacing><XGridOrigin>0</XGridOrigin><YGridOrigin>0</YGridOrigin></RulerGrid><Image><Gamma>1</Gamma><Contrast>0.5</Contrast><Brightness>0.5</Brightness><Sharpen>0</Sharpen><Blur>0</Blur><Denoise>0</Denoise><Transparency>0</Transparency></Image><Group><SelectMode>1</SelectMode><DisplayMode>2</DisplayMode><IsDropTarget>0</IsDropTarget><IsSnapTarget>1</IsSnapTarget><IsTextEditTarget>1</IsTextEditTarget><DontMoveChildren>0</DontMoveChildren></Group><Layout><ShapePermeableX>0</ShapePermeableX><ShapePermeableY>0</ShapePermeableY><ShapePermeablePlace>0</ShapePermeablePlace><ShapeFixedCode>0</ShapeFixedCode><ShapePlowCode>0</ShapePlowCode><ShapeRouteStyle>0</ShapeRouteStyle><ConFixedCode>0</ConFixedCode><ConLineJumpCode>0</ConLineJumpCode><ConLineJumpStyle>0</ConLineJumpStyle><ConLineJumpDirX>0</ConLineJumpDirX><ConLineJumpDirY>0</ConLineJumpDirY><ShapePlaceFlip>0</ShapePlaceFlip><ConLineRouteExt>0</ConLineRouteExt><ShapeSplit>0</ShapeSplit><ShapeSplittable>0</ShapeSplittable></Layout><PageLayout><ResizePage>0</ResizePage><EnableGrid>0</EnableGrid><DynamicsOff>0</DynamicsOff><CtrlAsInput>0</CtrlAsInput><PlaceStyle>0</PlaceStyle><RouteStyle>0</RouteStyle><PlaceDepth>0</PlaceDepth><PlowCode>0</PlowCode><LineJumpCode>1</LineJumpCode><LineJumpStyle>0</LineJumpStyle><PageLineJumpDirX>0</PageLineJumpDirX><PageLineJumpDirY>0</PageLineJumpDirY><LineToNodeX>0.125</LineToNodeX><LineToNodeY>0.125</LineToNodeY><BlockSizeX>0.25</BlockSizeX><BlockSizeY>0.25</BlockSizeY><AvenueSizeX>0.375</AvenueSizeX><AvenueSizeY>0.375</AvenueSizeY><LineToLineX>0.125</LineToLineX><LineToLineY>0.125</LineToLineY><LineJumpFactorX>0.66666666666667</LineJumpFactorX><LineJumpFactorY>0.66666666666667</LineJumpFactorY><LineAdjustFrom>0</LineAdjustFrom><LineAdjustTo>0</LineAdjustTo><PlaceFlip>0</PlaceFlip><LineRouteExt>0</LineRouteExt><PageShapeSplit>0</PageShapeSplit></PageLayout><PrintProps><PageLeftMargin>0.25</PageLeftMargin><PageRightMargin>0.25</PageRightMargin><PageTopMargin>0.25</PageTopMargin><PageBottomMargin>0.25</PageBottomMargin><ScaleX>1</ScaleX><ScaleY>1</ScaleY><PagesX>1</PagesX><PagesY>1</PagesY><CenterX>0</CenterX><CenterY>0</CenterY><OnPage>0</OnPage><PrintGrid>0</PrintGrid><PrintPageOrientation>1</PrintPageOrientation><PaperKind>1</PaperKind><PaperSource>7</PaperSource></PrintProps><PageProps><PageWidth Unit='NUM' F='No Formula'>0</PageWidth><PageHeight Unit='NUM' F='No Formula'>0</PageHeight><ShdwOffsetX Unit='NUM' F='No Formula'>0</ShdwOffsetX><ShdwOffsetY Unit='NUM' F='No Formula'>0</ShdwOffsetY><PageScale F='No Formula'>0</PageScale><DrawingScale F='No Formula'>0</DrawingScale><DrawingSizeType F='No Formula'>0</DrawingSizeType><DrawingScaleType F='No Formula'>0</DrawingScaleType><InhibitSnap F='No Formula'>0</InhibitSnap><UIVisibility F='No Formula'>0</UIVisibility><ShdwType F='No Formula'>0</ShdwType><ShdwObliqueAngle Unit='NUM' F='No Formula'>0</ShdwObliqueAngle><ShdwScaleFactor F='No Formula'>0</ShdwScaleFactor></PageProps><Char IX='0'><Font>4</Font><Color>0</Color><Style>0</Style><Case>0</Case><Pos>0</Pos><FontScale>1</FontScale><Size>0.1666666666666667</Size><DblUnderline>0</DblUnderline><Overline>0</Overline><Strikethru>0</Strikethru><Highlight>0</Highlight><DoubleStrikethrough>0</DoubleStrikethrough><RTLText>0</RTLText><UseVertical>0</UseVertical><Letterspace>0</Letterspace><ColorTrans>0</ColorTrans><AsianFont>0</AsianFont><ComplexScriptFont>0</ComplexScriptFont><LocalizeFont>0</LocalizeFont><ComplexScriptSize>-1</ComplexScriptSize><LangID>1029</LangID></Char><Para IX='0'><IndFirst>0</IndFirst><IndLeft>0</IndLeft><IndRight>0</IndRight><SpLine>-1.2</SpLine><SpBefore>0</SpBefore><SpAfter>0</SpAfter><HorzAlign>1</HorzAlign><Bullet>0</Bullet><BulletStr V='null'/><BulletFont>0</BulletFont><LocalizeBulletFont>0</LocalizeBulletFont><BulletFontSize>-1</BulletFontSize><TextPosAfterBullet>0</TextPosAfterBullet><Flags>0</Flags></Para><Tabs IX='0'/></StyleSheet><StyleSheet ID='1' NameU='Text Only' Name='Text Only' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern>0</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>0</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Para IX='0'><IndFirst F='Inh'>0</IndFirst><IndLeft F='Inh'>0</IndLeft><IndRight F='Inh'>0</IndRight><SpLine F='Inh'>-1.2</SpLine><SpBefore F='Inh'>0</SpBefore><SpAfter F='Inh'>0</SpAfter><HorzAlign>0</HorzAlign><Bullet F='Inh'>0</Bullet><BulletStr F='Inh'/><BulletFont F='Inh'>0</BulletFont><LocalizeBulletFont F='Inh'>0</LocalizeBulletFont><BulletFontSize F='Inh'>-1</BulletFontSize><TextPosAfterBullet F='Inh'>0</TextPosAfterBullet><Flags F='Inh'>0</Flags></Para></StyleSheet><StyleSheet ID='2' NameU='None' Name='None' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern>0</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill></StyleSheet><StyleSheet ID='3' NameU='Normal' Name='Normal' LineStyle='0' FillStyle='0' TextStyle='0'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><TextBlock><LeftMargin Unit='PT'>0.05555555555555555</LeftMargin><RightMargin Unit='PT'>0.05555555555555555</RightMargin><TopMargin Unit='PT'>0.05555555555555555</TopMargin><BottomMargin Unit='PT'>0.05555555555555555</BottomMargin><VerticalAlign F='Inh'>1</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock></StyleSheet><StyleSheet ID='4' NameU='Guide' Name='Guide' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight Unit='PT'>0</LineWeight><LineColor>4</LineColor><LinePattern>23</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin Unit='PT' F='Inh'>0.05555555555555555</LeftMargin><RightMargin Unit='PT' F='Inh'>0.05555555555555555</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>2</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Misc><NoObjHandles F='Inh'>0</NoObjHandles><NonPrinting>1</NonPrinting><NoCtlHandles F='Inh'>0</NoCtlHandles><NoAlignBox F='Inh'>0</NoAlignBox><UpdateAlignBox F='Inh'>0</UpdateAlignBox><HideText F='Inh'>0</HideText><DynFeedback F='Inh'>0</DynFeedback><GlueType F='Inh'>0</GlueType><WalkPreference F='Inh'>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType F='Inh'>0</ObjType><Comment F='Inh'/><IsDropSource F='Inh'>0</IsDropSource><NoLiveDynamics F='Inh'>0</NoLiveDynamics><LocalizeMerge F='Inh'>0</LocalizeMerge><Calendar F='Inh'>0</Calendar><LangID F='Inh'>1029</LangID><ShapeKeywords F='Inh'/><DropOnPageScale F='Inh'>1</DropOnPageScale></Misc><Layout><ShapePermeableX>1</ShapePermeableX><ShapePermeableY>1</ShapePermeableY><ShapePermeablePlace>1</ShapePermeablePlace><ShapeFixedCode F='Inh'>0</ShapeFixedCode><ShapePlowCode F='Inh'>0</ShapePlowCode><ShapeRouteStyle F='Inh'>0</ShapeRouteStyle><ConFixedCode F='Inh'>0</ConFixedCode><ConLineJumpCode F='Inh'>0</ConLineJumpCode><ConLineJumpStyle F='Inh'>0</ConLineJumpStyle><ConLineJumpDirX F='Inh'>0</ConLineJumpDirX><ConLineJumpDirY F='Inh'>0</ConLineJumpDirY><ShapePlaceFlip F='Inh'>0</ShapePlaceFlip><ConLineRouteExt F='Inh'>0</ConLineRouteExt><ShapeSplit F='Inh'>0</ShapeSplit><ShapeSplittable F='Inh'>0</ShapeSplittable></Layout><Char IX='0'><Font F='Inh'>4</Font><Color>4</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size>0.125</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID F='Inh'>1029</LangID></Char></StyleSheet><StyleSheet ID='6' NameU='Basic' Name='Basic' LineStyle='7' FillStyle='7' TextStyle='7'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.003333333333333334</LineWeight><LineColor F='Inh'>#000000</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><TextBlock><LeftMargin Unit='PT'>0.05555555555555555</LeftMargin><RightMargin Unit='PT'>0.05555555555555555</RightMargin><TopMargin Unit='PT'>0.05555555555555555</TopMargin><BottomMargin Unit='PT'>0.05555555555555555</BottomMargin><VerticalAlign F='Inh'>1</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Char IX='0'><Font F='Inh'>4</Font><Color F='Inh'>0</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size Unit='PT'>0.1111111111111111</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID>1033</LangID></Char><Para IX='0'><IndFirst F='Inh'>0</IndFirst><IndLeft F='Inh'>0</IndLeft><IndRight F='Inh'>0</IndRight><SpLine F='Inh'>-1.2</SpLine><SpBefore F='Inh'>0</SpBefore><SpAfter F='Inh'>0</SpAfter><HorzAlign F='Inh'>1</HorzAlign><Bullet F='Inh'>0</Bullet><BulletStr F='Inh'/><BulletFont F='Inh'>0</BulletFont><LocalizeBulletFont F='Inh'>0</LocalizeBulletFont><BulletFontSize F='Inh'>-1</BulletFontSize><TextPosAfterBullet F='Inh'>0</TextPosAfterBullet><Flags F='Inh'>0</Flags></Para><Tabs IX='0'/></StyleSheet><StyleSheet ID='7' NameU='Visio 00' Name='Visio 00' LineStyle='0' FillStyle='0' TextStyle='0'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>1</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='HSL(0,0,0)'>#000000</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='HSL(144,116,225)'>#e8eef7</FillForegnd><FillBkgnd F='HSL(144,106,193)'>#b7c9e3</FillBkgnd><FillPattern F='Inh'>1</FillPattern><ShdwForegnd F='HSL(144,116,125)'>#4979c0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><Char IX='0'><Font F='Inh'>4</Font><Color>0</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size F='Inh'>0.1666666666666667</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID>1033</LangID></Char></StyleSheet><StyleSheet ID='8' NameU='Connector' Name='Connector' LineStyle='9' FillStyle='9' TextStyle='9'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.003333333333333334</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize>1</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize>1</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>0</FillForegnd><FillBkgnd F='Inh'>1</FillBkgnd><FillPattern F='Inh'>1</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin Unit='PT' F='Inh'>0.05555555555555555</LeftMargin><RightMargin Unit='PT' F='Inh'>0.05555555555555555</RightMargin><TopMargin Unit='PT' F='Inh'>0.05555555555555555</TopMargin><BottomMargin Unit='PT' F='Inh'>0.05555555555555555</BottomMargin><VerticalAlign F='Inh'>1</VerticalAlign><TextBkgnd>2</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Char IX='0'><Font F='Inh'>4</Font><Color F='Inh'>0</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size Unit='PT'>0.1111111111111111</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID>1033</LangID></Char></StyleSheet><StyleSheet ID='9' NameU='Visio 90' Name='Visio 90' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>1</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</Li...
[truncated message content] |
|
From: <got...@us...> - 2009-02-03 22:44:30
|
Revision: 189
http://scstudio.svn.sourceforge.net/scstudio/?rev=189&view=rev
Author: gotthardp
Date: 2009-02-03 22:44:24 +0000 (Tue, 03 Feb 2009)
Log Message:
-----------
Fixed instance/message name corruption (reported by Vojta).
Fixed module path issue (reported by Radek).
Implemented "Do you want to replace this drawing" question when re-importing a drawing (reported by Radek).
Modified Paths:
--------------
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/visualize.cpp
trunk/src/view/visio/scstudio.nsi
trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx
trunk/src/view/visio/stencils/Sequence Chart Studio/HMSC.vsx
Modified: trunk/src/view/visio/addon/addon.cpp
===================================================================
--- trunk/src/view/visio/addon/addon.cpp 2009-02-03 09:46:50 UTC (rev 188)
+++ trunk/src/view/visio/addon/addon.cpp 2009-02-03 22:44:24 UTC (rev 189)
@@ -276,7 +276,7 @@
// note: to keep stencil compatibility, the 1xx events must not be renumbered
case 100:
TRACE("CStudioAddon::Run() stencil event 'OnDrop'");
- return VAORC_SUCCESS;
+ return pDocumentMonitor->OnDropShape(iDocumentIndex, iPageIndex, sShapeU);
case 101:
TRACE("CStudioAddon::Run() reference action 'Open Reference'");
return pDocumentMonitor->OnOpenReference(iDocumentIndex, iPageIndex, sShapeU);
Modified: trunk/src/view/visio/addon/document.cpp
===================================================================
--- trunk/src/view/visio/addon/document.cpp 2009-02-03 09:46:50 UTC (rev 188)
+++ trunk/src/view/visio/addon/document.cpp 2009-02-03 22:44:24 UTC (rev 189)
@@ -41,9 +41,8 @@
m_reportVisible = false;
m_reportView = NULL;
- static const LPCTSTR keyName = _T("Software\\Sequence Chart Studio\\Modules");
- LoadModulesFromRegistry(HKEY_LOCAL_MACHINE, keyName);
- LoadModulesFromRegistry(HKEY_CURRENT_USER, keyName);
+ LoadModulesFromRegistry(HKEY_LOCAL_MACHINE);
+ LoadModulesFromRegistry(HKEY_CURRENT_USER);
}
CDocumentMonitor::~CDocumentMonitor()
@@ -65,10 +64,38 @@
m_vsoPageAddedEvent->Delete();
}
-int CDocumentMonitor::LoadModulesFromRegistry(HKEY hKey, LPCTSTR lpSubKey)
+int CDocumentMonitor::LoadModulesFromRegistry(HKEY hKey)
{
+ // step 1: read the module directory path
+ HKEY hPathKey;
+ if(RegOpenKeyEx(hKey, _T("Software\\Sequence Chart Studio"),
+ 0, KEY_READ, &hPathKey) != ERROR_SUCCESS)
+ {
+ return 1;
+ }
+
+ TCHAR oldPathName[MAX_PATH];
+ DWORD oldPathLength = MAX_PATH;
+ // store current directory
+ GetCurrentDirectory(oldPathLength, oldPathName);
+
+ DWORD newPathType;
+ TCHAR newPathName[MAX_PATH];
+ DWORD newPathLength = MAX_PATH;
+ // set the current directory to the registry value
+ // this is necessary to load DLL dependencies like scpseudocode.dll
+ if(RegQueryValueEx(hPathKey, _T("ModulesPath"),
+ NULL, &newPathType, (LPBYTE)newPathName, &newPathLength) == ERROR_SUCCESS)
+ {
+ SetCurrentDirectory(newPathName);
+ }
+
+ RegCloseKey(hPathKey);
+
+ // step 2: load the modules
HKEY hSubKey;
- if(RegOpenKeyEx(hKey, lpSubKey, 0, KEY_READ, &hSubKey) != ERROR_SUCCESS)
+ if(RegOpenKeyEx(hKey, _T("Software\\Sequence Chart Studio\\Modules"),
+ 0, KEY_READ, &hSubKey) != ERROR_SUCCESS)
{
return 1;
}
@@ -169,9 +196,44 @@
delete[] valName;
delete[] valData;
+ // put back the old value
+ SetCurrentDirectory(oldPathName);
+
+ RegCloseKey(hSubKey);
+
return 0;
}
+VAORC CDocumentMonitor::OnDropShape(int iDocumentIndex, int iPageIndex, _bstr_t sShapeU)
+{
+ Visio::IVDocumentPtr vsoDocument = m_vsoApp->Documents->Item[iDocumentIndex];
+ Visio::IVShapePtr vsoShape = vsoDocument->Pages->Item[iPageIndex]->Shapes->ItemU[sShapeU];
+
+ switch(get_shape_type(vsoShape))
+ {
+ case ST_BMSC_INSTANCE:
+ vsoShape->Text = _T("NAME");
+ break;
+
+ case ST_BMSC_MESSAGE:
+ case ST_BMSC_MESSAGE_LOST:
+ case ST_BMSC_MESSAGE_FOUND:
+ vsoShape->Text = _T("NAME");
+ break;
+
+ case ST_COMMENT:
+ case ST_TEXT:
+ vsoShape->Text = _T("Text");
+ break;
+
+ case ST_HMSC_REFERENCE:
+ vsoShape->Text = _T("NAME");
+ break;
+ }
+
+ return VAORC_SUCCESS;
+}
+
VAORC CDocumentMonitor::OnOpenReference(int iDocumentIndex, int iPageIndex, _bstr_t sShapeU)
{
Visio::IVDocumentPtr vsoDocument = m_vsoApp->Documents->Item[iDocumentIndex];
@@ -616,8 +678,32 @@
{
MscPtr drawing = formatter->load_msc(stream);
+ Visio::IVPagePtr page = m_vsoApp->ActivePage;
+ // check if the active page is empty
+ if(page->Shapes->Count > 0)
+ {
+ int answer = MessageBox(GetActiveWindow(),
+ _T("This page is not empty. Do you want to overwrite this drawing?\n")
+ _T("Say 'yes' to overwrite the drawing on this page. Say 'no' to append a new page."),
+ _T("Overwrite this drawing?"), MB_YESNOCANCEL | MB_DEFBUTTON2 | MB_ICONQUESTION);
+
+ if(answer == IDYES)
+ {
+ // clear existing page
+ for(int i = page->Shapes->Count; i > 0; i--)
+ page->Shapes->Item[i]->Delete();
+ }
+ else if(answer == IDNO)
+ {
+ // append new page
+ page = m_vsoApp->ActiveDocument->Pages->Add();
+ }
+ else if(answer == IDCANCEL)
+ return;
+ }
+
CDrawingVisualizer visualizer(m_vsoApp);
- visualizer.visualize_msc(m_vsoApp->ActivePage, drawing);
+ visualizer.visualize_msc(page, drawing);
}
void CDocumentMonitor::ExportActiveDocument(const ExportFormatterPtr& formatter, std::ostream& stream)
Modified: trunk/src/view/visio/addon/document.h
===================================================================
--- trunk/src/view/visio/addon/document.h 2009-02-03 09:46:50 UTC (rev 188)
+++ trunk/src/view/visio/addon/document.h 2009-02-03 22:44:24 UTC (rev 189)
@@ -35,6 +35,7 @@
Visio::IVApplicationPtr vsoApp, Visio::IVDocumentPtr vsoDocument);
virtual ~CDocumentMonitor();
+ VAORC OnDropShape(int iDocumentIndex, int iPageIndex, _bstr_t sShapeU);
VAORC OnOpenReference(int iDocumentIndex, int iPageIndex, _bstr_t sShapeU);
void InitMenu(Visio::IVApplicationPtr vsoApp);
@@ -62,7 +63,7 @@
private:
CDocumentMonitor(const CDocumentMonitor &other); // not implemented
- int LoadModulesFromRegistry(HKEY hKey, LPCTSTR lpSubKey);
+ int LoadModulesFromRegistry(HKEY hKey);
std::vector<HINSTANCE> m_open_modules;
typedef std::vector<FormatterPtr> FormatterPtrList;
Modified: trunk/src/view/visio/addon/visualize.cpp
===================================================================
--- trunk/src/view/visio/addon/visualize.cpp 2009-02-03 09:46:50 UTC (rev 188)
+++ trunk/src/view/visio/addon/visualize.cpp 2009-02-03 22:44:24 UTC (rev 189)
@@ -235,7 +235,12 @@
void CDrawingVisualizer::visualize_bmsc(Visio::IVPagePtr vsoPage, const BMscPtr& bmsc)
{
- vsoPage->Name = bmsc->get_label().c_str();
+ try
+ {
+ vsoPage->Name = bmsc->get_label().c_str();
+ }
+ catch (_com_error &)
+ { }
std::map<InstancePtr,Visio::IVShapePtr> instances;
@@ -251,6 +256,7 @@
SetLineBegin(inst, (*ipos)->get_line_begin());
SetLineEnd(inst, (*ipos)->get_line_end());
+ TRACE("CDrawingVisualizer::visualize_bmsc() instance " << (*ipos)->get_label().c_str());
instances[*ipos] = inst;
}
@@ -398,7 +404,12 @@
void CDrawingVisualizer::visualize_hmsc(Visio::IVPagePtr vsoPage, const HMscPtr& hmsc)
{
- vsoPage->Name = hmsc->get_label().c_str();
+ try
+ {
+ vsoPage->Name = hmsc->get_label().c_str();
+ }
+ catch (_com_error &)
+ { }
NodePtrMap nodes;
Modified: trunk/src/view/visio/scstudio.nsi
===================================================================
--- trunk/src/view/visio/scstudio.nsi 2009-02-03 09:46:50 UTC (rev 188)
+++ trunk/src/view/visio/scstudio.nsi 2009-02-03 22:44:24 UTC (rev 189)
@@ -26,7 +26,8 @@
InstallDir "$PROGRAMFILES\Sequence Chart Studio"
-!define ModuleRegPath "Software\Sequence Chart Studio\Modules"
+!define RegMainPath "Software\Sequence Chart Studio"
+!define RegModulesPath "Software\Sequence Chart Studio\Modules"
RequestExecutionLevel user
@@ -97,13 +98,14 @@
${AppendRegStr} ${VisioRegPath} "TemplatePath" "$INSTDIR\stencils"
; remove old modules
; FIXME: remove modules with the "sc_" prefix
- DeleteRegKey HKCU "${ModuleRegPath}"
+ DeleteRegKey HKCU "${RegMainPath}"
; register modules
- WriteRegStr HKCU '${ModuleRegPath}' 'sc_liveness' '$INSTDIR\bin\scliveness.dll'
- WriteRegStr HKCU '${ModuleRegPath}' 'sc_order' '$INSTDIR\bin\scorder.dll'
- WriteRegStr HKCU '${ModuleRegPath}' 'sc_race' '$INSTDIR\bin\scrace.dll'
- WriteRegStr HKCU '${ModuleRegPath}' 'sc_z120' '$INSTDIR\bin\scZ120.dll'
- WriteRegStr HKCU '${ModuleRegPath}' 'sc_engmann' '$INSTDIR\bin\scengmann.dll'
+ WriteRegStr HKCU '${RegMainPath}' 'ModulesPath' '$INSTDIR\bin'
+ WriteRegStr HKCU '${RegModulesPath}' 'sc_liveness' 'scliveness.dll'
+ WriteRegStr HKCU '${RegModulesPath}' 'sc_order' 'scorder.dll'
+ WriteRegStr HKCU '${RegModulesPath}' 'sc_race' 'scrace.dll'
+ WriteRegStr HKCU '${RegModulesPath}' 'sc_z120' 'scZ120.dll'
+ WriteRegStr HKCU '${RegModulesPath}' 'sc_engmann' 'scengmann.dll'
;Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
Modified: trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx
===================================================================
--- trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx 2009-02-03 09:46:50 UTC (rev 188)
+++ trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx 2009-02-03 22:44:24 UTC (rev 189)
@@ -1,6 +1,5 @@
<?xml version='1.0' encoding='utf-8' ?>
-<VisioDocument key='B3A4CCEDA838A99AB86D0A8B105EED23E41ABC900C3FC66F71147AC48E65F7EDEE7A155BF92B8178C82A3572C74964FF31F81CFDA18E8B33A6DC6BC67FD7F0C3' start='190' xmlns='http://schemas.microsoft.com/visio/2003/core' metric='0' DocLangID='1033' buildnum='8161' version='11.0' xml:space='preserve'><DocumentProperties><Title>Basic MSC</Title><Creator>Petr Gotthard</Creator><Company>Brno</Company><BuildNumberCreated>738205665</BuildNumberCreated><BuildNumberEdited>738205665</BuildNumberEdited><TimeCreated>2008-12-14T11:32:13</TimeCreated><TimeSaved>2009-01-25T21:18:47</TimeSaved><TimeEdited>2009-01-25T21:18:45</TimeEdited><TimePrinted>2008-12-14T11:32:13</TimePrinted></DocumentProperties><DocumentSettings TopPage='0' DefaultTextStyle='3' DefaultLineStyle='3' DefaultFillStyle='3' DefaultGuideStyle='4'><GlueSettings>9</GlueSettings><SnapSettings>65847</SnapSettings><SnapExtensions>34</SnapExtensions><DynamicGridEnabled>0</DynamicGridEnabled><ProtectStyles>0</ProtectStyles><ProtectShapes>0</ProtectShapes><ProtectMasters>0</ProtectMasters><ProtectBkgnds>0</ProtectBkgnds></DocumentSettings><Colors><ColorEntry IX='0' RGB='#000000'/><ColorEntry IX='1' RGB='#FFFFFF'/><ColorEntry IX='2' RGB='#FF0000'/><ColorEntry IX='3' RGB='#00FF00'/><ColorEntry IX='4' RGB='#0000FF'/><ColorEntry IX='5' RGB='#FFFF00'/><ColorEntry IX='6' RGB='#FF00FF'/><ColorEntry IX='7' RGB='#00FFFF'/><ColorEntry IX='8' RGB='#800000'/><ColorEntry IX='9' RGB='#008000'/><ColorEntry IX='10' RGB='#000080'/><ColorEntry IX='11' RGB='#808000'/><ColorEntry IX='12' RGB='#800080'/><ColorEntry IX='13' RGB='#008080'/><ColorEntry IX='14' RGB='#C0C0C0'/><ColorEntry IX='15' RGB='#E6E6E6'/><ColorEntry IX='16' RGB='#CDCDCD'/><ColorEntry IX='17' RGB='#B3B3B3'/><ColorEntry IX='18' RGB='#9A9A9A'/><ColorEntry IX='19' RGB='#808080'/><ColorEntry IX='20' RGB='#666666'/><ColorEntry IX='21' RGB='#4D4D4D'/><ColorEntry IX='22' RGB='#333333'/><ColorEntry IX='23' RGB='#1A1A1A'/></Colors><FaceNames><FaceName ID='1' Name='Arial Unicode MS' UnicodeRanges='-1 -369098753 63 0' CharSets='1614741759 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='357'/><FaceName ID='2' Name='Symbol' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 5 1 2 1 7 6 2 5 7' Flags='261'/><FaceName ID='3' Name='Wingdings' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 0 0 0 0 0 0 0 0 0' Flags='261'/><FaceName ID='4' Name='Arial' UnicodeRanges='31367 -2147483648 8 0' CharSets='1073742335 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='325'/><FaceName ID='5' Name='SimSun' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='6' Name='PMingLiU' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='7' Name='MS PGothic' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='8' Name='Dotum' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='9' Name='Sylfaen' UnicodeRanges='67110535 0 0 0' CharSets='536871071 0' Panos='1 10 5 2 5 3 6 3 3 3' Flags='325'/><FaceName ID='10' Name='Estrangelo Edessa' UnicodeRanges='-2147459008 0 128 0' CharSets='0 0' Panos='3 8 6 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='11' Name='Vrinda' UnicodeRanges='65539 0 0 0' CharSets='1 0' Panos='1 1 6 0 1 1 1 1 1 1' Flags='325'/><FaceName ID='12' Name='Shruti' UnicodeRanges='262144 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='13' Name='Mangal' UnicodeRanges='32768 0 0 0' CharSets='0 0' Panos='0 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='14' Name='Tunga' UnicodeRanges='4194304 0 0 0' CharSets='0 0' Panos='0 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='15' Name='Sendnya' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='16' Name='Raavi' UnicodeRanges='131072 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='17' Name='Dhenu' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='18' Name='Latha' UnicodeRanges='1048576 0 0 0' CharSets='0 0' Panos='2 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='19' Name='Gautami' UnicodeRanges='2097152 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='20' Name='Cordia New' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='21' Name='MS Farsi' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='22' Name='Gulim' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='23' Name='Times New Roman' UnicodeRanges='31367 -2147483648 8 0' CharSets='1073742335 -65536' Panos='2 2 6 3 5 4 5 2 3 4' Flags='325'/></FaceNames><StyleSheets><StyleSheet ID='0' NameU='No Style' Name='No Style'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.01</LineWeight><LineColor>0</LineColor><LinePattern>1</LinePattern><Rounding>0</Rounding><EndArrowSize>2</EndArrowSize><BeginArrow>0</BeginArrow><EndArrow>0</EndArrow><LineCap>0</LineCap><BeginArrowSize>2</BeginArrowSize><LineColorTrans>0</LineColorTrans></Line><Fill><FillForegnd>1</FillForegnd><FillBkgnd>0</FillBkgnd><FillPattern>1</FillPattern><ShdwForegnd>0</ShdwForegnd><ShdwBkgnd>1</ShdwBkgnd><ShdwPattern>0</ShdwPattern><FillForegndTrans>0</FillForegndTrans><FillBkgndTrans>0</FillBkgndTrans><ShdwForegndTrans>0</ShdwForegndTrans><ShdwBkgndTrans>0</ShdwBkgndTrans><ShapeShdwType>0</ShapeShdwType><ShapeShdwOffsetX>0</ShapeShdwOffsetX><ShapeShdwOffsetY>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>1</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop>0.5</DefaultTabStop><TextDirection>0</TextDirection><TextBkgndTrans>0</TextBkgndTrans></TextBlock><Protection><LockWidth>0</LockWidth><LockHeight>0</LockHeight><LockMoveX>0</LockMoveX><LockMoveY>0</LockMoveY><LockAspect>0</LockAspect><LockDelete>0</LockDelete><LockBegin>0</LockBegin><LockEnd>0</LockEnd><LockRotate>0</LockRotate><LockCrop>0</LockCrop><LockVtxEdit>0</LockVtxEdit><LockTextEdit>0</LockTextEdit><LockFormat>0</LockFormat><LockGroup>0</LockGroup><LockCalcWH>0</LockCalcWH><LockSelect>0</LockSelect><LockCustProp>0</LockCustProp></Protection><Misc><NoObjHandles>0</NoObjHandles><NonPrinting>0</NonPrinting><NoCtlHandles>0</NoCtlHandles><NoAlignBox>0</NoAlignBox><UpdateAlignBox>0</UpdateAlignBox><HideText>0</HideText><DynFeedback>0</DynFeedback><GlueType>0</GlueType><WalkPreference>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType>0</ObjType><Comment V='null'/><IsDropSource>0</IsDropSource><NoLiveDynamics>0</NoLiveDynamics><LocalizeMerge>0</LocalizeMerge><Calendar>0</Calendar><LangID>1033</LangID><ShapeKeywords V='null'/><DropOnPageScale>1</DropOnPageScale></Misc><Event><TheData F='No Formula'>0</TheData><TheText F='No Formula'>0</TheText><EventDblClick F='No Formula'>0</EventDblClick><EventXFMod F='No Formula'>0</EventXFMod><EventDrop F='No Formula'>0</EventDrop></Event><Help><HelpTopic V='null'/><Copyright V='null'/></Help><LayerMem><LayerMember V='null'/></LayerMem><RulerGrid><XRulerDensity>32</XRulerDensity><YRulerDensity>32</YRulerDensity><XRulerOrigin>0</XRulerOrigin><YRulerOrigin>0</YRulerOrigin><XGridDensity>8</XGridDensity><YGridDensity>8</YGridDensity><XGridSpacing>0</XGridSpacing><YGridSpacing>0</YGridSpacing><XGridOrigin>0</XGridOrigin><YGridOrigin>0</YGridOrigin></RulerGrid><Image><Gamma>1</Gamma><Contrast>0.5</Contrast><Brightness>0.5</Brightness><Sharpen>0</Sharpen><Blur>0</Blur><Denoise>0</Denoise><Transparency>0</Transparency></Image><Group><SelectMode>1</SelectMode><DisplayMode>2</DisplayMode><IsDropTarget>0</IsDropTarget><IsSnapTarget>1</IsSnapTarget><IsTextEditTarget>1</IsTextEditTarget><DontMoveChildren>0</DontMoveChildren></Group><Layout><ShapePermeableX>0</ShapePermeableX><ShapePermeableY>0</ShapePermeableY><ShapePermeablePlace>0</ShapePermeablePlace><ShapeFixedCode>0</ShapeFixedCode><ShapePlowCode>0</ShapePlowCode><ShapeRouteStyle>0</ShapeRouteStyle><ConFixedCode>0</ConFixedCode><ConLineJumpCode>0</ConLineJumpCode><ConLineJumpStyle>0</ConLineJumpStyle><ConLineJumpDirX>0</ConLineJumpDirX><ConLineJumpDirY>0</ConLineJumpDirY><ShapePlaceFlip>0</ShapePlaceFlip><ConLineRouteExt>0</ConLineRouteExt><ShapeSplit>0</ShapeSplit><ShapeSplittable>0</ShapeSplittable></Layout><PageLayout><ResizePage>0</ResizePage><EnableGrid>0</EnableGrid><DynamicsOff>0</DynamicsOff><CtrlAsInput>0</CtrlAsInput><PlaceStyle>0</PlaceStyle><RouteStyle>0</RouteStyle><PlaceDepth>0</PlaceDepth><PlowCode>0</PlowCode><LineJumpCode>1</LineJumpCode><LineJumpStyle>0</LineJumpStyle><PageLineJumpDirX>0</PageLineJumpDirX><PageLineJumpDirY>0</PageLineJumpDirY><LineToNodeX>0.125</LineToNodeX><LineToNodeY>0.125</LineToNodeY><BlockSizeX>0.25</BlockSizeX><BlockSizeY>0.25</BlockSizeY><AvenueSizeX>0.375</AvenueSizeX><AvenueSizeY>0.375</AvenueSizeY><LineToLineX>0.125</LineToLineX><LineToLineY>0.125</LineToLineY><LineJumpFactorX>0.66666666666667</LineJumpFactorX><LineJumpFactorY>0.66666666666667</LineJumpFactorY><LineAdjustFrom>0</LineAdjustFrom><LineAdjustTo>0</LineAdjustTo><PlaceFlip>0</PlaceFlip><LineRouteExt>0</LineRouteExt><PageShapeSplit>0</PageShapeSplit></PageLayout><PrintProps><PageLeftMargin>0.25</PageLeftMargin><PageRightMargin>0.25</PageRightMargin><PageTopMargin>0.25</PageTopMargin><PageBottomMargin>0.25</PageBottomMargin><ScaleX>1</ScaleX><ScaleY>1</ScaleY><PagesX>1</PagesX><PagesY>1</PagesY><CenterX>0</CenterX><CenterY>0</CenterY><OnPage>0</OnPage><PrintGrid>0</PrintGrid><PrintPageOrientation>1</PrintPageOrientation><PaperKind>1</PaperKind><PaperSource>7</PaperSource></PrintProps><PageProps><PageWidth Unit='NUM' F='No Formula'>0</PageWidth><PageHeight Unit='NUM' F='No Formula'>0</PageHeight><ShdwOffsetX Unit='NUM' F='No Formula'>0</ShdwOffsetX><ShdwOffsetY Unit='NUM' F='No Formula'>0</ShdwOffsetY><PageScale F='No Formula'>0</PageScale><DrawingScale F='No Formula'>0</DrawingScale><DrawingSizeType F='No Formula'>0</DrawingSizeType><DrawingScaleType F='No Formula'>0</DrawingScaleType><InhibitSnap F='No Formula'>0</InhibitSnap><UIVisibility F='No Formula'>0</UIVisibility><ShdwType F='No Formula'>0</ShdwType><ShdwObliqueAngle Unit='NUM' F='No Formula'>0</ShdwObliqueAngle><ShdwScaleFactor F='No Formula'>0</ShdwScaleFactor></PageProps><Char IX='0'><Font>4</Font><Color>0</Color><Style>0</Style><Case>0</Case><Pos>0</Pos><FontScale>1</FontScale><Size>0.1666666666666667</Size><DblUnderline>0</DblUnderline><Overline>0</Overline><Strikethru>0</Strikethru><Highlight>0</Highlight><DoubleStrikethrough>0</DoubleStrikethrough><RTLText>0</RTLText><UseVertical>0</UseVertical><Letterspace>0</Letterspace><ColorTrans>0</ColorTrans><AsianFont>0</AsianFont><ComplexScriptFont>0</ComplexScriptFont><LocalizeFont>0</LocalizeFont><ComplexScriptSize>-1</ComplexScriptSize><LangID>1033</LangID></Char><Para IX='0'><IndFirst>0</IndFirst><IndLeft>0</IndLeft><IndRight>0</IndRight><SpLine>-1.2</SpLine><SpBefore>0</SpBefore><SpAfter>0</SpAfter><HorzAlign>1</HorzAlign><Bullet>0</Bullet><BulletStr V='null'/><BulletFont>0</BulletFont><LocalizeBulletFont>0</LocalizeBulletFont><BulletFontSize>-1</BulletFontSize><TextPosAfterBullet>0</TextPosAfterBullet><Flags>0</Flags></Para><Tabs IX='0'/></StyleSheet><StyleSheet ID='1' NameU='Text Only' Name='Text Only' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern>0</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>0</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Para IX='0'><IndFirst F='Inh'>0</IndFirst><IndLeft F='Inh'>0</IndLeft><IndRight F='Inh'>0</IndRight><SpLine F='Inh'>-1.2</SpLine><SpBefore F='Inh'>0</SpBefore><SpAfter F='Inh'>0</SpAfter><HorzAlign>0</HorzAlign><Bullet F='Inh'>0</Bullet><BulletStr F='Inh'/><BulletFont F='Inh'>0</BulletFont><LocalizeBulletFont F='Inh'>0</LocalizeBulletFont><BulletFontSize F='Inh'>-1</BulletFontSize><TextPosAfterBullet F='Inh'>0</TextPosAfterBullet><Flags F='Inh'>0</Flags></Para></StyleSheet><StyleSheet ID='2' NameU='None' Name='None' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern>0</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill></StyleSheet><StyleSheet ID='3' NameU='Normal' Name='Normal' LineStyle='0' FillStyle='0' TextStyle='0'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><TextBlock><LeftMargin Unit='PT'>0.05555555555555555</LeftMargin><RightMargin Unit='PT'>0.05555555555555555</RightMargin><TopMargin Unit='PT'>0.05555555555555555</TopMargin><BottomMargin Unit='PT'>0.05555555555555555</BottomMargin><VerticalAlign F='Inh'>1</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock></StyleSheet><StyleSheet ID='4' NameU='Guide' Name='Guide' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight Unit='PT'>0</LineWeight><LineColor>4</LineColor><LinePattern>23</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin Unit='PT' F='Inh'>0.05555555555555555</LeftMargin><RightMargin Unit='PT' F='Inh'>0.05555555555555555</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>2</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Misc><NoObjHandles F='Inh'>0</NoObjHandles><NonPrinting>1</NonPrinting><NoCtlHandles F='Inh'>0</NoCtlHandles><NoAlignBox F='Inh'>0</NoAlignBox><UpdateAlignBox F='Inh'>0</UpdateAlignBox><HideText F='Inh'>0</HideText><DynFeedback F='Inh'>0</DynFeedback><GlueType F='Inh'>0</GlueType><WalkPreference F='Inh'>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType F='Inh'>0</ObjType><Comment F='Inh'/><IsDropSource F='Inh'>0</IsDropSource><NoLiveDynamics F='Inh'>0</NoLiveDynamics><LocalizeMerge F='Inh'>0</LocalizeMerge><Calendar F='Inh'>0</Calendar><LangID F='Inh'>1033</LangID><ShapeKeywords F='Inh'/><DropOnPageScale F='Inh'>1</DropOnPageScale></Misc><Layout><ShapePermeableX>1</ShapePermeableX><ShapePermeableY>1</ShapePermeableY><ShapePermeablePlace>1</ShapePermeablePlace><ShapeFixedCode F='Inh'>0</ShapeFixedCode><ShapePlowCode F='Inh'>0</ShapePlowCode><ShapeRouteStyle F='Inh'>0</ShapeRouteStyle><ConFixedCode F='Inh'>0</ConFixedCode><ConLineJumpCode F='Inh'>0</ConLineJumpCode><ConLineJumpStyle F='Inh'>0</ConLineJumpStyle><ConLineJumpDirX F='Inh'>0</ConLineJumpDirX><ConLineJumpDirY F='Inh'>0</ConLineJumpDirY><ShapePlaceFlip F='Inh'>0</ShapePlaceFlip><ConLineRouteExt F='Inh'>0</ConLineRouteExt><ShapeSplit F='Inh'>0</ShapeSplit><ShapeSplittable F='Inh'>0</ShapeSplittable></Layout><Char IX='0'><Font F='Inh'>4</Font><Color>4</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size>0.125</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID F='Inh'>1033</LangID></Char></StyleSheet><StyleSheet ID='6' NameU='Connector' Name='Connector' LineStyle='7' FillStyle='7' TextStyle='7'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.003333333333333334</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize>1</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize>1</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>0</FillForegnd><FillBkgnd F='Inh'>1</FillBkgnd><FillPattern F='Inh'>1</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwO...
[truncated message content] |
|
From: <got...@us...> - 2009-02-05 23:03:33
|
Revision: 191
http://scstudio.svn.sourceforge.net/scstudio/?rev=191&view=rev
Author: gotthardp
Date: 2009-02-05 23:03:27 +0000 (Thu, 05 Feb 2009)
Log Message:
-----------
- Implemented better warning when checking a counter-example
- Fixed undo-redo
- Fixed uninstaller not being added to the add/remove programs list
Modified Paths:
--------------
trunk/src/view/visio/addon/addon.cpp
trunk/src/view/visio/addon/document.cpp
trunk/src/view/visio/addon/extract.cpp
trunk/src/view/visio/addon/extract.h
trunk/src/view/visio/scstudio.nsi
trunk/src/view/visio/stencils/Sequence Chart Studio/MSC.vtx
Modified: trunk/src/view/visio/addon/addon.cpp
===================================================================
--- trunk/src/view/visio/addon/addon.cpp 2009-02-05 20:12:32 UTC (rev 190)
+++ trunk/src/view/visio/addon/addon.cpp 2009-02-05 23:03:27 UTC (rev 191)
@@ -387,6 +387,10 @@
void CStudioAddon::HandleCellChanged(Visio::IVCellPtr vsoCell)
{
+ // ignore events when undoing or redoing
+ if(vsoCell->Application->IsUndoingOrRedoing == VARIANT_TRUE)
+ return;
+
if(vsoCell->Section == visSectionControls)
{
// note: to keep stencil compatibility, the names must not be changed
@@ -411,6 +415,10 @@
void CStudioAddon::HandleConnectionsAdded(Visio::IVConnectsPtr vsoConnects)
{
+ // ignore events when undoing or redoing
+ if(vsoConnects->Application->IsUndoingOrRedoing == VARIANT_TRUE)
+ return;
+
// dynamic connectors are positioned on Width*X
// connectors must not move when an instance is begin enlarged
Modified: trunk/src/view/visio/addon/document.cpp
===================================================================
--- trunk/src/view/visio/addon/document.cpp 2009-02-05 20:12:32 UTC (rev 190)
+++ trunk/src/view/visio/addon/document.cpp 2009-02-05 23:03:27 UTC (rev 191)
@@ -208,6 +208,10 @@
VAORC CDocumentMonitor::OnDropShape(int iDocumentIndex, int iPageIndex, _bstr_t sShapeU)
{
+ // ignore events when undoing or redoing
+ if(m_vsoApp->IsUndoingOrRedoing == VARIANT_TRUE)
+ return VAORC_SUCCESS;
+
Visio::IVDocumentPtr vsoDocument = m_vsoApp->Documents->Item[iDocumentIndex];
Visio::IVShapePtr vsoShape = vsoDocument->Pages->Item[iPageIndex]->Shapes->ItemU[sShapeU];
@@ -609,6 +613,8 @@
// clear the verification report
m_reportView->Reset();
+ long scope_id = vsoApp->BeginUndoScope("Repaint");
+
// this should repaint all pages, but we don't know the HMSC root
// walk through all pages are repaint each drawing separately
for(int i = 1; i <= vsoApp->ActiveDocument->Pages->Count; i++)
@@ -628,6 +634,8 @@
visualizer.visualize_msc(page, msc);
}
+ vsoApp->EndUndoScope(scope_id, true);
+
m_reportView->Print(RS_NOTICE,
stringize() << "Repaint completed.");
@@ -680,6 +688,8 @@
{
MscPtr drawing = formatter->load_msc(stream);
+ long scope_id = m_vsoApp->BeginUndoScope("Import");
+
Visio::IVPagePtr page = m_vsoApp->ActivePage;
// check if the active page is empty
if(page->Shapes->Count > 0)
@@ -701,11 +711,16 @@
page = m_vsoApp->ActiveDocument->Pages->Add();
}
else if(answer == IDCANCEL)
+ {
+ m_vsoApp->EndUndoScope(scope_id, false);
return;
+ }
}
CDrawingVisualizer visualizer(m_vsoApp);
visualizer.visualize_msc(page, drawing);
+
+ m_vsoApp->EndUndoScope(scope_id, true);
}
void CDocumentMonitor::ExportActiveDocument(const ExportFormatterPtr& formatter, std::ostream& stream)
@@ -750,11 +765,14 @@
int CDocumentMonitor::DisplayDocument(const MscPtr& msc)
{
- Visio::IVDocumentPtr vsoDocument = m_vsoApp->GetDocuments()->Add(VST_FILE_NAME);
+ long scope_id = m_vsoApp->BeginUndoScope("Show MSC");
+ Visio::IVDocumentPtr vsoDocument = m_vsoApp->Documents->Add(VST_FILE_NAME);
+
CDrawingVisualizer visualizer(m_vsoApp);
visualizer.visualize_msc(vsoDocument->Pages->Item[1], msc);
+ m_vsoApp->EndUndoScope(scope_id, true);
return 0;
}
Modified: trunk/src/view/visio/addon/extract.cpp
===================================================================
--- trunk/src/view/visio/addon/extract.cpp 2009-02-05 20:12:32 UTC (rev 190)
+++ trunk/src/view/visio/addon/extract.cpp 2009-02-05 23:03:27 UTC (rev 191)
@@ -92,6 +92,7 @@
{_T("hmsc.reference"), ST_HMSC_REFERENCE},
{_T("hmsc.line"), ST_HMSC_LINE},
{_T("hmsc.arrow"), ST_HMSC_ARROW},
+ {_T("marker.event"), ST_MARKER_EVENT},
{NULL, ST_UNKNOWN}
};
@@ -487,6 +488,12 @@
shapelist() << shape);
break;
+ case ST_MARKER_EVENT:
+ PrintWarning(stringize() << page_name << ": "
+ << "Event marker detected. This drawing has already been checked.",
+ shapelist() << shape);
+ break;
+
case ST_UNKNOWN:
default:
PrintWarning(stringize() << page_name << ": "
@@ -1010,6 +1017,12 @@
relations[shape->ID] = new NodeRelation();
break;
+ case ST_MARKER_EVENT:
+ PrintWarning(stringize() << page_name << ": "
+ << "Event marker detected. This drawing has already been checked.",
+ shapelist() << shape);
+ break;
+
case ST_UNKNOWN:
default:
PrintWarning(stringize() << page_name << ": "
Modified: trunk/src/view/visio/addon/extract.h
===================================================================
--- trunk/src/view/visio/addon/extract.h 2009-02-05 20:12:32 UTC (rev 190)
+++ trunk/src/view/visio/addon/extract.h 2009-02-05 23:03:27 UTC (rev 191)
@@ -39,6 +39,7 @@
ST_HMSC_REFERENCE,
ST_HMSC_LINE,
ST_HMSC_ARROW,
+ ST_MARKER_EVENT,
ST_UNKNOWN
};
Modified: trunk/src/view/visio/scstudio.nsi
===================================================================
--- trunk/src/view/visio/scstudio.nsi 2009-02-05 20:12:32 UTC (rev 190)
+++ trunk/src/view/visio/scstudio.nsi 2009-02-05 23:03:27 UTC (rev 191)
@@ -21,8 +21,10 @@
; -- General ---------------------------
+!define VERSION "0.2.0"
+
Name "Sequence Chart Studio"
-OutFile "scstudio-setup.exe"
+OutFile "scstudio-setup-${VERSION}.exe"
InstallDir "$PROGRAMFILES\Sequence Chart Studio"
@@ -107,8 +109,13 @@
WriteRegStr HKCU '${RegModulesPath}' 'sc_z120' 'scZ120.dll'
WriteRegStr HKCU '${RegModulesPath}' 'sc_engmann' 'scengmann.dll'
- ;Create uninstaller
+ ; Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
+ ; Write uninstall information
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SCStudio" \
+ "DisplayName" "Sequence Chart Studio ${VERSION}"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SCStudio" \
+ "UninstallString" "$INSTDIR\Uninstall.exe"
SectionEnd
LangString DESC_SecAddon ${LANG_ENGLISH} "Installs Microsoft Visio Add-on and related stencils and templates."
@@ -129,6 +136,7 @@
DeleteRegKey HKCU "Software\Sequence Chart Studio"
Delete "$INSTDIR\Uninstall.exe"
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SCStudio"
RMDir "$INSTDIR"
SectionEnd
Modified: trunk/src/view/visio/stencils/Sequence Chart Studio/MSC.vtx
===================================================================
--- trunk/src/view/visio/stencils/Sequence Chart Studio/MSC.vtx 2009-02-05 20:12:32 UTC (rev 190)
+++ trunk/src/view/visio/stencils/Sequence Chart Studio/MSC.vtx 2009-02-05 23:03:27 UTC (rev 191)
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8' ?>
-<VisioDocument key='9ECF6AB285356A8F09702FC622A0703C4959012E508C20764CA6EA075CEFC35960497E162271B89E610C9DAC985B6FFE680FB7405759D2A0FD7682372EB50D88' start='190' xmlns='http://schemas.microsoft.com/visio/2003/core' metric='0' DocLangID='1033' buildnum='8161' version='11.0' xml:space='preserve'><DocumentProperties><Title>Message Sequence Chart</Title><Creator>Petr Gotthard</Creator><Template>P:\Projects\scstudio\src\view\visio\Sequence Chart Studio\MSC.vtx</Template><Desc>Create interaction diagram standartized in ITU-T Z.120.</Desc><Company>Brno</Company><BuildNumberCreated>738205665</BuildNumberCreated><BuildNumberEdited>738205665</BuildNumberEdited><PreviewPicture Size='21216'>
+<VisioDocument key='7920578D7A49E5AB965731E26D8590959911DEE580D86D16FE2D00D6966881C216684672D4BFF1DD7F7EBEEA6E2FF7A5A19E588D3EEAA89528AED9593A08EAD0' start='190' xmlns='http://schemas.microsoft.com/visio/2003/core' metric='0' DocLangID='1033' buildnum='8161' version='11.0' xml:space='preserve'><DocumentProperties><Title>Message Sequence Chart</Title><Creator>Petr Gotthard</Creator><Template>P:\Projects\scstudio\src\view\visio\Sequence Chart Studio\MSC.vtx</Template><Desc>Create interaction diagram standartized in ITU-T Z.120.</Desc><Company>Brno</Company><BuildNumberCreated>738205665</BuildNumberCreated><BuildNumberEdited>738205665</BuildNumberEdited><PreviewPicture Size='21216'>
AQAAAIwAAAAAAAAAAAAAAFIAAABSAAAAAAAAAAAAAACSCQAAmAkAACBFTUYAAAEA4FIAAAMAAAABA
AAADwAAAGwAAAAAAAAAAAQAAAADAAAyAQAA5gAAAAAAAAAAAAAAAAAAAFCrBABwggMAVgBJAFMASQ
BPAAAARAByAGEAdwBpAG4AZwAAAAAAAABMAAAAQFIAAAAAAAAAAAAAUgAAAFIAAAAAAAAAAAAAAFM
@@ -372,7 +372,7 @@
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////wAAAA4AAAAUAAAA
-AAAAABAAAAAUAAAA</PreviewPicture><TimeCreated>2008-12-14T15:08:25</TimeCreated><TimeSaved>2009-01-26T22:26:07</TimeSaved><TimeEdited>2009-01-26T22:24:52</TimeEdited><TimePrinted>2008-12-14T15:08:25</TimePrinted></DocumentProperties><DocumentSettings TopPage='0' DefaultTextStyle='3' DefaultLineStyle='3' DefaultFillStyle='3' DefaultGuideStyle='4'><GlueSettings>41</GlueSettings><SnapSettings>295</SnapSettings><SnapExtensions>34</SnapExtensions><DynamicGridEnabled>0</DynamicGridEnabled><ProtectStyles>0</ProtectStyles><ProtectShapes>0</ProtectShapes><ProtectMasters>0</ProtectMasters><ProtectBkgnds>0</ProtectBkgnds></DocumentSettings><Colors><ColorEntry IX='0' RGB='#000000'/><ColorEntry IX='1' RGB='#FFFFFF'/><ColorEntry IX='2' RGB='#FF0000'/><ColorEntry IX='3' RGB='#00FF00'/><ColorEntry IX='4' RGB='#0000FF'/><ColorEntry IX='5' RGB='#FFFF00'/><ColorEntry IX='6' RGB='#FF00FF'/><ColorEntry IX='7' RGB='#00FFFF'/><ColorEntry IX='8' RGB='#800000'/><ColorEntry IX='9' RGB='#008000'/><ColorEntry IX='10' RGB='#000080'/><ColorEntry IX='11' RGB='#808000'/><ColorEntry IX='12' RGB='#800080'/><ColorEntry IX='13' RGB='#008080'/><ColorEntry IX='14' RGB='#C0C0C0'/><ColorEntry IX='15' RGB='#E6E6E6'/><ColorEntry IX='16' RGB='#CDCDCD'/><ColorEntry IX='17' RGB='#B3B3B3'/><ColorEntry IX='18' RGB='#9A9A9A'/><ColorEntry IX='19' RGB='#808080'/><ColorEntry IX='20' RGB='#666666'/><ColorEntry IX='21' RGB='#4D4D4D'/><ColorEntry IX='22' RGB='#333333'/><ColorEntry IX='23' RGB='#1A1A1A'/></Colors><FaceNames><FaceName ID='1' Name='Arial Unicode MS' UnicodeRanges='-1 -369098753 63 0' CharSets='1614741759 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='357'/><FaceName ID='2' Name='Symbol' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 5 1 2 1 7 6 2 5 7' Flags='261'/><FaceName ID='3' Name='Wingdings' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 0 0 0 0 0 0 0 0 0' Flags='261'/><FaceName ID='4' Name='Arial' UnicodeRanges='31367 -2147483648 8 0' CharSets='1073742335 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='325'/><FaceName ID='5' Name='SimSun' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='6' Name='PMingLiU' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='7' Name='MS PGothic' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='8' Name='Dotum' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='9' Name='Sylfaen' UnicodeRanges='67110535 0 0 0' CharSets='536871071 0' Panos='1 10 5 2 5 3 6 3 3 3' Flags='325'/><FaceName ID='10' Name='Estrangelo Edessa' UnicodeRanges='-2147459008 0 128 0' CharSets='0 0' Panos='3 8 6 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='11' Name='Vrinda' UnicodeRanges='65539 0 0 0' CharSets='1 0' Panos='1 1 6 0 1 1 1 1 1 1' Flags='325'/><FaceName ID='12' Name='Shruti' UnicodeRanges='262144 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='13' Name='Mangal' UnicodeRanges='32768 0 0 0' CharSets='0 0' Panos='0 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='14' Name='Tunga' UnicodeRanges='4194304 0 0 0' CharSets='0 0' Panos='0 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='15' Name='Sendnya' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='16' Name='Raavi' UnicodeRanges='131072 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='17' Name='Dhenu' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='18' Name='Latha' UnicodeRanges='1048576 0 0 0' CharSets='0 0' Panos='2 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='19' Name='Gautami' UnicodeRanges='2097152 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='20' Name='Cordia New' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='21' Name='MS Farsi' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='22' Name='Gulim' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='23' Name='Times New Roman' UnicodeRanges='31367 -2147483648 8 0' CharSets='1073742335 -65536' Panos='2 2 6 3 5 4 5 2 3 4' Flags='325'/></FaceNames><StyleSheets><StyleSheet ID='0' NameU='No Style' Name='No Style'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.01</LineWeight><LineColor>0</LineColor><LinePattern>1</LinePattern><Rounding>0</Rounding><EndArrowSize>2</EndArrowSize><BeginArrow>0</BeginArrow><EndArrow>0</EndArrow><LineCap>0</LineCap><BeginArrowSize>2</BeginArrowSize><LineColorTrans>0</LineColorTrans></Line><Fill><FillForegnd>1</FillForegnd><FillBkgnd>0</FillBkgnd><FillPattern>1</FillPattern><ShdwForegnd>0</ShdwForegnd><ShdwBkgnd>1</ShdwBkgnd><ShdwPattern>0</ShdwPattern><FillForegndTrans>0</FillForegndTrans><FillBkgndTrans>0</FillBkgndTrans><ShdwForegndTrans>0</ShdwForegndTrans><ShdwBkgndTrans>0</ShdwBkgndTrans><ShapeShdwType>0</ShapeShdwType><ShapeShdwOffsetX>0</ShapeShdwOffsetX><ShapeShdwOffsetY>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>1</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop>0.5</DefaultTabStop><TextDirection>0</TextDirection><TextBkgndTrans>0</TextBkgndTrans></TextBlock><Protection><LockWidth>0</LockWidth><LockHeight>0</LockHeight><LockMoveX>0</LockMoveX><LockMoveY>0</LockMoveY><LockAspect>0</LockAspect><LockDelete>0</LockDelete><LockBegin>0</LockBegin><LockEnd>0</LockEnd><LockRotate>0</LockRotate><LockCrop>0</LockCrop><LockVtxEdit>0</LockVtxEdit><LockTextEdit>0</LockTextEdit><LockFormat>0</LockFormat><LockGroup>0</LockGroup><LockCalcWH>0</LockCalcWH><LockSelect>0</LockSelect><LockCustProp>0</LockCustProp></Protection><Misc><NoObjHandles>0</NoObjHandles><NonPrinting>0</NonPrinting><NoCtlHandles>0</NoCtlHandles><NoAlignBox>0</NoAlignBox><UpdateAlignBox>0</UpdateAlignBox><HideText>0</HideText><DynFeedback>0</DynFeedback><GlueType>0</GlueType><WalkPreference>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType>0</ObjType><Comment V='null'/><IsDropSource>0</IsDropSource><NoLiveDynamics>0</NoLiveDynamics><LocalizeMerge>0</LocalizeMerge><Calendar>0</Calendar><LangID>1033</LangID><ShapeKeywords V='null'/><DropOnPageScale>1</DropOnPageScale></Misc><Event><TheData F='No Formula'>0</TheData><TheText F='No Formula'>0</TheText><EventDblClick F='No Formula'>0</EventDblClick><EventXFMod F='No Formula'>0</EventXFMod><EventDrop F='No Formula'>0</EventDrop></Event><Help><HelpTopic V='null'/><Copyright V='null'/></Help><LayerMem><LayerMember V='null'/></LayerMem><RulerGrid><XRulerDensity>32</XRulerDensity><YRulerDensity>32</YRulerDensity><XRulerOrigin>0</XRulerOrigin><YRulerOrigin>0</YRulerOrigin><XGridDensity>8</XGridDensity><YGridDensity>8</YGridDensity><XGridSpacing>0</XGridSpacing><YGridSpacing>0</YGridSpacing><XGridOrigin>0</XGridOrigin><YGridOrigin>0</YGridOrigin></RulerGrid><Image><Gamma>1</Gamma><Contrast>0.5</Contrast><Brightness>0.5</Brightness><Sharpen>0</Sharpen><Blur>0</Blur><Denoise>0</Denoise><Transparency>0</Transparency></Image><Group><SelectMode>1</SelectMode><DisplayMode>2</DisplayMode><IsDropTarget>0</IsDropTarget><IsSnapTarget>1</IsSnapTarget><IsTextEditTarget>1</IsTextEditTarget><DontMoveChildren>0</DontMoveChildren></Group><Layout><ShapePermeableX>0</ShapePermeableX><ShapePermeableY>0</ShapePermeableY><ShapePermeablePlace>0</ShapePermeablePlace><ShapeFixedCode>0</ShapeFixedCode><ShapePlowCode>0</ShapePlowCode><ShapeRouteStyle>0</ShapeRouteStyle><ConFixedCode>0</ConFixedCode><ConLineJumpCode>0</ConLineJumpCode><ConLineJumpStyle>0</ConLineJumpStyle><ConLineJumpDirX>0</ConLineJumpDirX><ConLineJumpDirY>0</ConLineJumpDirY><ShapePlaceFlip>0</ShapePlaceFlip><ConLineRouteExt>0</ConLineRouteExt><ShapeSplit>0</ShapeSplit><ShapeSplittable>0</ShapeSplittable></Layout><PageLayout><ResizePage>0</ResizePage><EnableGrid>0</EnableGrid><DynamicsOff>0</DynamicsOff><CtrlAsInput>0</CtrlAsInput><PlaceStyle>0</PlaceStyle><RouteStyle>0</RouteStyle><PlaceDepth>0</PlaceDepth><PlowCode>0</PlowCode><LineJumpCode>1</LineJumpCode><LineJumpStyle>0</LineJumpStyle><PageLineJumpDirX>0</PageLineJumpDirX><PageLineJumpDirY>0</PageLineJumpDirY><LineToNodeX>0.125</LineToNodeX><LineToNodeY>0.125</LineToNodeY><BlockSizeX>0.25</BlockSizeX><BlockSizeY>0.25</BlockSizeY><AvenueSizeX>0.375</AvenueSizeX><AvenueSizeY>0.375</AvenueSizeY><LineToLineX>0.125</LineToLineX><LineToLineY>0.125</LineToLineY><LineJumpFactorX>0.66666666666667</LineJumpFactorX><LineJumpFactorY>0.66666666666667</LineJumpFactorY><LineAdjustFrom>0</LineAdjustFrom><LineAdjustTo>0</LineAdjustTo><PlaceFlip>0</PlaceFlip><LineRouteExt>0</LineRouteExt><PageShapeSplit>0</PageShapeSplit></PageLayout><PrintProps><PageLeftMargin>0.25</PageLeftMargin><PageRightMargin>0.25</PageRightMargin><PageTopMargin>0.25</PageTopMargin><PageBottomMargin>0.25</PageBottomMargin><ScaleX>1</ScaleX><ScaleY>1</ScaleY><PagesX>1</PagesX><PagesY>1</PagesY><CenterX>0</CenterX><CenterY>0</CenterY><OnPage>0</OnPage><PrintGrid>0</PrintGrid><PrintPageOrientation>1</PrintPageOrientation><PaperKind>1</PaperKind><PaperSource>7</PaperSource></PrintProps><PageProps><PageWidth Unit='NUM' F='No Formula'>0</PageWidth><PageHeight Unit='NUM' F='No Formula'>0</PageHeight><ShdwOffsetX Unit='NUM' F='No Formula'>0</ShdwOffsetX><ShdwOffsetY Unit='NUM' F='No Formula'>0</ShdwOffsetY><PageScale F='No Formula'>0</PageScale><DrawingScale F='No Formula'>0</DrawingScale><DrawingSizeType F='No Formula'>0</DrawingSizeType><DrawingScaleType F='No Formula'>0</DrawingScaleType><InhibitSnap F='No Formula'>0</InhibitSnap><UIVisibility F='No Formula'>0</UIVisibility><ShdwType F='No Formula'>0</ShdwType><ShdwObliqueAngle Unit='NUM' F='No Formula'>0</ShdwObliqueAngle><ShdwScaleFactor F='No Formula'>0</ShdwScaleFactor></PageProps><Char IX='0'><Font>4</Font><Color>0</Color><Style>0</Style><Case>0</Case><Pos>0</Pos><FontScale>1</FontScale><Size>0.1666666666666667</Size><DblUnderline>0</DblUnderline><Overline>0</Overline><Strikethru>0</Strikethru><Highlight>0</Highlight><DoubleStrikethrough>0</DoubleStrikethrough><RTLText>0</RTLText><UseVertical>0</UseVertical><Letterspace>0</Letterspace><ColorTrans>0</ColorTrans><AsianFont>0</AsianFont><ComplexScriptFont>0</ComplexScriptFont><LocalizeFont>0</LocalizeFont><ComplexScriptSize>-1</ComplexScriptSize><LangID>1033</LangID></Char><Para IX='0'><IndFirst>0</IndFirst><IndLeft>0</IndLeft><IndRight>0</IndRight><SpLine>-1.2</SpLine><SpBefore>0</SpBefore><SpAfter>0</SpAfter><HorzAlign>1</HorzAlign><Bullet>0</Bullet><BulletStr V='null'/><BulletFont>0</BulletFont><LocalizeBulletFont>0</LocalizeBulletFont><BulletFontSize>-1</BulletFontSize><TextPosAfterBullet>0</TextPosAfterBullet><Flags>0</Flags></Para><Tabs IX='0'/></StyleSheet><StyleSheet ID='1' NameU='Text Only' Name='Text Only' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern>0</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>0</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Para IX='0'><IndFirst F='Inh'>0</IndFirst><IndLeft F='Inh'>0</IndLeft><IndRight F='Inh'>0</IndRight><SpLine F='Inh'>-1.2</SpLine><SpBefore F='Inh'>0</SpBefore><SpAfter F='Inh'>0</SpAfter><HorzAlign>0</HorzAlign><Bullet F='Inh'>0</Bullet><BulletStr F='Inh'/><BulletFont F='Inh'>0</BulletFont><LocalizeBulletFont F='Inh'>0</LocalizeBulletFont><BulletFontSize F='Inh'>-1</BulletFontSize><TextPosAfterBullet F='Inh'>0</TextPosAfterBullet><Flags F='Inh'>0</Flags></Para></StyleSheet><StyleSheet ID='2' NameU='None' Name='None' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern>0</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill></StyleSheet><StyleSheet ID='3' NameU='Normal' Name='Normal' LineStyle='0' FillStyle='0' TextStyle='0'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><TextBlock><LeftMargin Unit='PT'>0.05555555555555555</LeftMargin><RightMargin Unit='PT'>0.05555555555555555</RightMargin><TopMargin Unit='PT'>0.05555555555555555</TopMargin><BottomMargin Unit='PT'>0.05555555555555555</BottomMargin><VerticalAlign F='Inh'>1</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock></StyleSheet><StyleSheet ID='4' NameU='Guide' Name='Guide' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight Unit='PT'>0</LineWeight><LineColor>4</LineColor><LinePattern>23</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin Unit='PT' F='Inh'>0.05555555555555555</LeftMargin><RightMargin Unit='PT' F='Inh'>0.05555555555555555</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>2</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Misc><NoObjHandles F='Inh'>0</NoObjHandles><NonPrinting>1</NonPrinting><NoCtlHandles F='Inh'>0</NoCtlHandles><NoAlignBox F='Inh'>0</NoAlignBox><UpdateAlignBox F='Inh'>0</UpdateAlignBox><HideText F='Inh'>0</HideText><DynFeedback F='Inh'>0</DynFeedback><GlueType F='Inh'>0</GlueType><WalkPreference F='Inh'>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType F='Inh'>0</ObjType><Comment F='Inh'/><IsDropSource F='Inh'>0</IsDropSource><NoLiveDynamics F='Inh'>0</NoLiveDynamics><LocalizeMerge F='Inh'>0</LocalizeMerge><Calendar F='Inh'>0</Calendar><LangID F='Inh'>1033</LangID><ShapeKeywords F='Inh'/><DropOnPageScale F='Inh'>1</DropOnPageScale></Misc><Layout><ShapePermeableX>1</ShapePermeableX><ShapePermeableY>1</ShapePermeableY><ShapePermeablePlace>1</ShapePermeablePlace><ShapeFixedCode F='Inh'>0</ShapeFixedCode><ShapePlowCode F='Inh'>0</ShapePlowCode><ShapeRouteStyle F='Inh'>0</ShapeRouteStyle><ConFixedCode F='Inh'>0</ConFixedCode><ConLineJumpCode F='Inh'>0</ConLineJumpCode><ConLineJumpStyle F='Inh'>0</ConLineJumpStyle><ConLineJumpDirX F='Inh'>0</ConLineJumpDirX><ConLineJumpDirY F='Inh'>0</ConLineJumpDirY><ShapePlaceFlip F='Inh'>0</ShapePlaceFlip><ConLineRouteExt F='Inh'>0</ConLineRouteExt><ShapeSplit F='Inh'>0</ShapeSplit><ShapeSplittable F='Inh'>0</ShapeSplittable></Layout><Char IX='0'><Font F='Inh'>4</Font><Color>4</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size>0.125</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID F='Inh'>1033</LangID></Char></StyleSheet><StyleSheet ID='6' NameU='Connector' Name='Connector' LineStyle='7' FillStyle='7' TextStyle='7'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.003333333333333334</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize>1</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize>1</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>0</FillForegnd><FillBkgnd F='Inh'>1</FillBkgnd><FillPattern F='Inh'>1</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin Unit='PT' F='Inh'>0.05555555555555555</LeftMargin><RightMargin Unit='PT' F='Inh'>0.05555555555555555</RightMargin><TopMargin Unit='PT' F='Inh'>0.05555555555555555</TopMargin><BottomMargin Unit='PT' F='Inh'>0.05555555555555555</BottomMargin><VerticalAlign F='Inh'>1</VerticalAlign><TextBkgnd>2</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Char IX='0'><Font F='Inh'>4</Font><Color F='Inh'>0</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale>...
[truncated message content] |
|
From: <got...@us...> - 2009-02-22 17:32:46
|
Revision: 195
http://scstudio.svn.sourceforge.net/scstudio/?rev=195&view=rev
Author: gotthardp
Date: 2009-02-22 17:32:36 +0000 (Sun, 22 Feb 2009)
Log Message:
-----------
BUG: Removed "disconnected message" error when overlapping events are detected.
BUG: Names of duplicated messages/instances are no longer overwritten by default "NAME".
FEATURE: Implemented draft shapes for conditions and time constraints.
Modified Paths:
--------------
trunk/src/view/visio/addon/document.cpp
trunk/src/view/visio/addon/extract.cpp
trunk/src/view/visio/addon/extract.h
trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx
trunk/src/view/visio/stencils/Sequence Chart Studio/HMSC.vsx
Modified: trunk/src/view/visio/addon/document.cpp
===================================================================
--- trunk/src/view/visio/addon/document.cpp 2009-02-22 11:03:41 UTC (rev 194)
+++ trunk/src/view/visio/addon/document.cpp 2009-02-22 17:32:36 UTC (rev 195)
@@ -227,22 +227,26 @@
switch(get_shape_type(vsoShape))
{
case ST_BMSC_INSTANCE:
- vsoShape->Text = _T("NAME");
+ if(vsoShape->Text.length() == 0)
+ vsoShape->Text = _T("NAME");
break;
case ST_BMSC_MESSAGE:
case ST_BMSC_MESSAGE_LOST:
case ST_BMSC_MESSAGE_FOUND:
- vsoShape->Text = _T("NAME");
+ if(vsoShape->Text.length() == 0)
+ vsoShape->Text = _T("NAME");
break;
case ST_COMMENT:
case ST_TEXT:
- vsoShape->Text = _T("Text");
+ if(vsoShape->Text.length() == 0)
+ vsoShape->Text = _T("NAME");
break;
case ST_HMSC_REFERENCE:
- vsoShape->Text = _T("NAME");
+ if(vsoShape->Text.length() == 0)
+ vsoShape->Text = _T("NAME");
break;
}
Modified: trunk/src/view/visio/addon/extract.cpp
===================================================================
--- trunk/src/view/visio/addon/extract.cpp 2009-02-22 11:03:41 UTC (rev 194)
+++ trunk/src/view/visio/addon/extract.cpp 2009-02-22 17:32:36 UTC (rev 195)
@@ -84,14 +84,17 @@
{_T("bmsc.coregion.box"), ST_BMSC_COREGION},
{_T("bmsc.order.line"), ST_BMSC_ORDER_LINE},
{_T("bmsc.order.arrow"), ST_BMSC_ORDER_ARROW},
- {_T("comment"), ST_COMMENT},
- {_T("text"), ST_TEXT},
{_T("hmsc.connection"), ST_HMSC_CONNECTION},
{_T("hmsc.start"), ST_HMSC_START},
{_T("hmsc.end"), ST_HMSC_END},
{_T("hmsc.reference"), ST_HMSC_REFERENCE},
+ {_T("hmsc.condition"), ST_HMSC_CONDITION},
{_T("hmsc.line"), ST_HMSC_LINE},
{_T("hmsc.arrow"), ST_HMSC_ARROW},
+ {_T("comment"), ST_COMMENT},
+ {_T("text"), ST_TEXT},
+ {_T("time.interval"), ST_TIME_INTERVAL},
+ {_T("time.directed"), ST_TIME_DIRECTED},
{_T("marker.event"), ST_MARKER_EVENT},
{NULL, ST_UNKNOWN}
};
@@ -148,13 +151,17 @@
CDrawingExtractor::SPoint CDrawingExtractor::get_connect_point(Visio::IVConnectPtr connect)
{
+ SPoint result;
Visio::IVShapePtr shape = connect->ToSheet;
short cellrow = connect->ToCell->Row;
- Visio::IVCellPtr posx = shape->CellsSRC[visSectionConnectionPts][cellrow][visX];
- Visio::IVCellPtr posy = shape->CellsSRC[visSectionConnectionPts][cellrow][visY];
+ result.m_x = shape->CellsSRC[visSectionConnectionPts][cellrow][visX]->Result[visMillimeters];
+ result.m_y = shape->CellsSRC[visSectionConnectionPts][cellrow][visY]->Result[visMillimeters];
- return SPoint(posx->Result[visMillimeters], posy->Result[visMillimeters]);
+ result.m_from_id = connect->FromSheet->ID;
+ result.m_to_id = connect->ToSheet->ID;
+
+ return result;
}
inline double align5(double mm)
@@ -216,7 +223,7 @@
Visio::IVPagePtr vsoPage = coregion->ContainingPage;
std::string page_name = (const char*)vsoPage->Name;
- typedef std::map<SPoint,CoregionEventPtr> TCoregionEvents;
+ typedef std::multimap<SPoint,CoregionEventPtr> TCoregionEvents;
TCoregionEvents events;
std::set<long> relations;
@@ -320,14 +327,28 @@
}
// store the CoregionEventPtr for each point
- std::pair<TCoregionEvents::iterator, bool> result =
- events.insert(std::make_pair<SPoint,CoregionEventPtr>(pos, event));
- if(!result.second)
+ events.insert(std::make_pair<SPoint,CoregionEventPtr>(pos, event));
+ }
+
+ // check for collisional shapes
+ for(TCoregionEvents::iterator epos = events.begin();
+ epos != events.end(); epos = events.upper_bound(epos->first))
+ {
+ if(events.count(epos->first) > 1)
{
- // FIXME: select collisional shapes
+ shapelist this_shapelist;
+
+ std::pair<TCoregionEvents::iterator, TCoregionEvents::iterator> collision =
+ events.equal_range(epos->first);
+ for(TCoregionEvents::iterator cpos = collision.first;
+ cpos != collision.second; cpos++)
+ {
+ this_shapelist << vsoPage->Shapes->ItemFromID[cpos->first.m_from_id];
+ }
+
PrintError(stringize() << page_name << ": "
<< "Multiple events cannot be attached to one point.",
- shapelist() << shape << coregion);
+ this_shapelist << coregion);
}
}
@@ -514,7 +535,8 @@
// assert there is no connection to inner shapes of the instance group
assert_no_nested_FromConnects(instance);
- std::set<SStrictOrder> events;
+ typedef std::multiset<SStrictOrder> TEventSet;
+ TEventSet events;
// random walk through all connectors from others
for(int i = 1; i <= instance->FromConnects->Count; i++)
{
@@ -600,17 +622,28 @@
continue;
}
- std::pair<std::set<SStrictOrder>::iterator, bool> result =
- events.insert(event);
- if(!result.second)
+ events.insert(event);
+ }
+
+ // check for collisional shapes
+ for(TEventSet::iterator epos = events.begin();
+ epos != events.end(); epos = events.upper_bound(*epos))
+ {
+ if(events.count(*epos) > 1)
{
- // FIXME: select all collisional shapes
- Visio::IVShapePtr collisional_shape =
- vsoPage->Shapes->ItemFromID[result.first->shape_id];
+ shapelist this_shapelist;
+ std::pair<TEventSet::iterator, TEventSet::iterator> collision =
+ events.equal_range(*epos);
+ for(TEventSet::iterator cpos = collision.first;
+ cpos != collision.second; cpos++)
+ {
+ this_shapelist << vsoPage->Shapes->ItemFromID[cpos->shape_id];
+ }
+
PrintError(stringize() << page_name << ": "
<< "Multiple events cannot be attached to one point.",
- shapelist() << shape << collisional_shape << instance);
+ this_shapelist << instance);
}
}
@@ -626,7 +659,7 @@
long coregion_id;
// walk though the events in a time-order
- for(std::set<SStrictOrder>::iterator epos = events.begin();
+ for(TEventSet::iterator epos = events.begin();
epos != events.end(); epos++)
{
Visio::IVShapePtr shape = vsoPage->Shapes->ItemFromID[epos->shape_id];
Modified: trunk/src/view/visio/addon/extract.h
===================================================================
--- trunk/src/view/visio/addon/extract.h 2009-02-22 11:03:41 UTC (rev 194)
+++ trunk/src/view/visio/addon/extract.h 2009-02-22 17:32:36 UTC (rev 195)
@@ -31,14 +31,17 @@
ST_BMSC_COREGION,
ST_BMSC_ORDER_LINE,
ST_BMSC_ORDER_ARROW,
- ST_COMMENT,
- ST_TEXT,
ST_HMSC_CONNECTION,
ST_HMSC_START,
ST_HMSC_END,
ST_HMSC_REFERENCE,
+ ST_HMSC_CONDITION,
ST_HMSC_LINE,
ST_HMSC_ARROW,
+ ST_COMMENT,
+ ST_TEXT,
+ ST_TIME_INTERVAL,
+ ST_TIME_DIRECTED,
ST_MARKER_EVENT,
ST_UNKNOWN
};
@@ -93,13 +96,12 @@
struct SPoint
{
- SPoint(double x, double y)
- : m_x(x), m_y(y)
- { }
-
double m_x;
double m_y;
+ long m_from_id;
+ long m_to_id;
+
bool operator < (const SPoint& p2) const
{
int resy = fcmp(m_y, p2.m_y);
Modified: trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx
===================================================================
--- trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx 2009-02-22 11:03:41 UTC (rev 194)
+++ trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx 2009-02-22 17:32:36 UTC (rev 195)
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8' ?>
-<VisioDocument key='3FEEEE1EEA11B913D8989B034030DE659BDAEB8F2B074DFA04378F42208FFBD242DB5F3FB21AA50760A6AAAB4B2C4FAB1E5714FE6CEA189B1DC4E31E04BD0823' start='190' xmlns='http://schemas.microsoft.com/visio/2003/core' metric='0' DocLangID='1033' buildnum='8161' version='11.0' xml:space='preserve'><DocumentProperties><Title>Basic MSC</Title><Creator>Petr Gotthard</Creator><Company>Brno</Company><BuildNumberCreated>738205665</BuildNumberCreated><BuildNumberEdited>738205665</BuildNumberEdited><TimeCreated>2008-12-14T11:32:13</TimeCreated><TimeSaved>2009-02-03T21:51:49</TimeSaved><TimeEdited>2009-02-03T21:50:34</TimeEdited><TimePrinted>2008-12-14T11:32:13</TimePrinted></DocumentProperties><DocumentSettings TopPage='0' DefaultTextStyle='3' DefaultLineStyle='3' DefaultFillStyle='3' DefaultGuideStyle='4'><GlueSettings>9</GlueSettings><SnapSettings>65847</SnapSettings><SnapExtensions>34</SnapExtensions><DynamicGridEnabled>0</DynamicGridEnabled><ProtectStyles>0</ProtectStyles><ProtectShapes>0</ProtectShapes><ProtectMasters>0</ProtectMasters><ProtectBkgnds>0</ProtectBkgnds></DocumentSettings><Colors><ColorEntry IX='0' RGB='#000000'/><ColorEntry IX='1' RGB='#FFFFFF'/><ColorEntry IX='2' RGB='#FF0000'/><ColorEntry IX='3' RGB='#00FF00'/><ColorEntry IX='4' RGB='#0000FF'/><ColorEntry IX='5' RGB='#FFFF00'/><ColorEntry IX='6' RGB='#FF00FF'/><ColorEntry IX='7' RGB='#00FFFF'/><ColorEntry IX='8' RGB='#800000'/><ColorEntry IX='9' RGB='#008000'/><ColorEntry IX='10' RGB='#000080'/><ColorEntry IX='11' RGB='#808000'/><ColorEntry IX='12' RGB='#800080'/><ColorEntry IX='13' RGB='#008080'/><ColorEntry IX='14' RGB='#C0C0C0'/><ColorEntry IX='15' RGB='#E6E6E6'/><ColorEntry IX='16' RGB='#CDCDCD'/><ColorEntry IX='17' RGB='#B3B3B3'/><ColorEntry IX='18' RGB='#9A9A9A'/><ColorEntry IX='19' RGB='#808080'/><ColorEntry IX='20' RGB='#666666'/><ColorEntry IX='21' RGB='#4D4D4D'/><ColorEntry IX='22' RGB='#333333'/><ColorEntry IX='23' RGB='#1A1A1A'/></Colors><FaceNames><FaceName ID='1' Name='Arial Unicode MS' UnicodeRanges='-1 -369098753 63 0' CharSets='1614741759 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='357'/><FaceName ID='2' Name='Symbol' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 5 1 2 1 7 6 2 5 7' Flags='261'/><FaceName ID='3' Name='Wingdings' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 0 0 0 0 0 0 0 0 0' Flags='261'/><FaceName ID='4' Name='Arial' UnicodeRanges='31367 -2147483648 8 0' CharSets='1073742335 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='325'/><FaceName ID='5' Name='SimSun' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='6' Name='PMingLiU' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='7' Name='MS PGothic' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='8' Name='Dotum' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='9' Name='Sylfaen' UnicodeRanges='67110535 0 0 0' CharSets='536871071 0' Panos='1 10 5 2 5 3 6 3 3 3' Flags='325'/><FaceName ID='10' Name='Estrangelo Edessa' UnicodeRanges='-2147459008 0 128 0' CharSets='0 0' Panos='3 8 6 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='11' Name='Vrinda' UnicodeRanges='65539 0 0 0' CharSets='1 0' Panos='1 1 6 0 1 1 1 1 1 1' Flags='325'/><FaceName ID='12' Name='Shruti' UnicodeRanges='262144 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='13' Name='Mangal' UnicodeRanges='32768 0 0 0' CharSets='0 0' Panos='0 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='14' Name='Tunga' UnicodeRanges='4194304 0 0 0' CharSets='0 0' Panos='0 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='15' Name='Sendnya' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='16' Name='Raavi' UnicodeRanges='131072 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='17' Name='Dhenu' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='18' Name='Latha' UnicodeRanges='1048576 0 0 0' CharSets='0 0' Panos='2 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='19' Name='Gautami' UnicodeRanges='2097152 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='20' Name='Cordia New' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='21' Name='MS Farsi' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='22' Name='Gulim' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='23' Name='Times New Roman' UnicodeRanges='31367 -2147483648 8 0' CharSets='1073742335 -65536' Panos='2 2 6 3 5 4 5 2 3 4' Flags='325'/></FaceNames><StyleSheets><StyleSheet ID='0' NameU='No Style' Name='No Style'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.01</LineWeight><LineColor>0</LineColor><LinePattern>1</LinePattern><Rounding>0</Rounding><EndArrowSize>2</EndArrowSize><BeginArrow>0</BeginArrow><EndArrow>0</EndArrow><LineCap>0</LineCap><BeginArrowSize>2</BeginArrowSize><LineColorTrans>0</LineColorTrans></Line><Fill><FillForegnd>1</FillForegnd><FillBkgnd>0</FillBkgnd><FillPattern>1</FillPattern><ShdwForegnd>0</ShdwForegnd><ShdwBkgnd>1</ShdwBkgnd><ShdwPattern>0</ShdwPattern><FillForegndTrans>0</FillForegndTrans><FillBkgndTrans>0</FillBkgndTrans><ShdwForegndTrans>0</ShdwForegndTrans><ShdwBkgndTrans>0</ShdwBkgndTrans><ShapeShdwType>0</ShapeShdwType><ShapeShdwOffsetX>0</ShapeShdwOffsetX><ShapeShdwOffsetY>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>1</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop>0.5</DefaultTabStop><TextDirection>0</TextDirection><TextBkgndTrans>0</TextBkgndTrans></TextBlock><Protection><LockWidth>0</LockWidth><LockHeight>0</LockHeight><LockMoveX>0</LockMoveX><LockMoveY>0</LockMoveY><LockAspect>0</LockAspect><LockDelete>0</LockDelete><LockBegin>0</LockBegin><LockEnd>0</LockEnd><LockRotate>0</LockRotate><LockCrop>0</LockCrop><LockVtxEdit>0</LockVtxEdit><LockTextEdit>0</LockTextEdit><LockFormat>0</LockFormat><LockGroup>0</LockGroup><LockCalcWH>0</LockCalcWH><LockSelect>0</LockSelect><LockCustProp>0</LockCustProp></Protection><Misc><NoObjHandles>0</NoObjHandles><NonPrinting>0</NonPrinting><NoCtlHandles>0</NoCtlHandles><NoAlignBox>0</NoAlignBox><UpdateAlignBox>0</UpdateAlignBox><HideText>0</HideText><DynFeedback>0</DynFeedback><GlueType>0</GlueType><WalkPreference>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType>0</ObjType><Comment V='null'/><IsDropSource>0</IsDropSource><NoLiveDynamics>0</NoLiveDynamics><LocalizeMerge>0</LocalizeMerge><Calendar>0</Calendar><LangID>1033</LangID><ShapeKeywords V='null'/><DropOnPageScale>1</DropOnPageScale></Misc><Event><TheData F='No Formula'>0</TheData><TheText F='No Formula'>0</TheText><EventDblClick F='No Formula'>0</EventDblClick><EventXFMod F='No Formula'>0</EventXFMod><EventDrop F='No Formula'>0</EventDrop></Event><Help><HelpTopic V='null'/><Copyright V='null'/></Help><LayerMem><LayerMember V='null'/></LayerMem><RulerGrid><XRulerDensity>32</XRulerDensity><YRulerDensity>32</YRulerDensity><XRulerOrigin>0</XRulerOrigin><YRulerOrigin>0</YRulerOrigin><XGridDensity>8</XGridDensity><YGridDensity>8</YGridDensity><XGridSpacing>0</XGridSpacing><YGridSpacing>0</YGridSpacing><XGridOrigin>0</XGridOrigin><YGridOrigin>0</YGridOrigin></RulerGrid><Image><Gamma>1</Gamma><Contrast>0.5</Contrast><Brightness>0.5</Brightness><Sharpen>0</Sharpen><Blur>0</Blur><Denoise>0</Denoise><Transparency>0</Transparency></Image><Group><SelectMode>1</SelectMode><DisplayMode>2</DisplayMode><IsDropTarget>0</IsDropTarget><IsSnapTarget>1</IsSnapTarget><IsTextEditTarget>1</IsTextEditTarget><DontMoveChildren>0</DontMoveChildren></Group><Layout><ShapePermeableX>0</ShapePermeableX><ShapePermeableY>0</ShapePermeableY><ShapePermeablePlace>0</ShapePermeablePlace><ShapeFixedCode>0</ShapeFixedCode><ShapePlowCode>0</ShapePlowCode><ShapeRouteStyle>0</ShapeRouteStyle><ConFixedCode>0</ConFixedCode><ConLineJumpCode>0</ConLineJumpCode><ConLineJumpStyle>0</ConLineJumpStyle><ConLineJumpDirX>0</ConLineJumpDirX><ConLineJumpDirY>0</ConLineJumpDirY><ShapePlaceFlip>0</ShapePlaceFlip><ConLineRouteExt>0</ConLineRouteExt><ShapeSplit>0</ShapeSplit><ShapeSplittable>0</ShapeSplittable></Layout><PageLayout><ResizePage>0</ResizePage><EnableGrid>0</EnableGrid><DynamicsOff>0</DynamicsOff><CtrlAsInput>0</CtrlAsInput><PlaceStyle>0</PlaceStyle><RouteStyle>0</RouteStyle><PlaceDepth>0</PlaceDepth><PlowCode>0</PlowCode><LineJumpCode>1</LineJumpCode><LineJumpStyle>0</LineJumpStyle><PageLineJumpDirX>0</PageLineJumpDirX><PageLineJumpDirY>0</PageLineJumpDirY><LineToNodeX>0.125</LineToNodeX><LineToNodeY>0.125</LineToNodeY><BlockSizeX>0.25</BlockSizeX><BlockSizeY>0.25</BlockSizeY><AvenueSizeX>0.375</AvenueSizeX><AvenueSizeY>0.375</AvenueSizeY><LineToLineX>0.125</LineToLineX><LineToLineY>0.125</LineToLineY><LineJumpFactorX>0.66666666666667</LineJumpFactorX><LineJumpFactorY>0.66666666666667</LineJumpFactorY><LineAdjustFrom>0</LineAdjustFrom><LineAdjustTo>0</LineAdjustTo><PlaceFlip>0</PlaceFlip><LineRouteExt>0</LineRouteExt><PageShapeSplit>0</PageShapeSplit></PageLayout><PrintProps><PageLeftMargin>0.25</PageLeftMargin><PageRightMargin>0.25</PageRightMargin><PageTopMargin>0.25</PageTopMargin><PageBottomMargin>0.25</PageBottomMargin><ScaleX>1</ScaleX><ScaleY>1</ScaleY><PagesX>1</PagesX><PagesY>1</PagesY><CenterX>0</CenterX><CenterY>0</CenterY><OnPage>0</OnPage><PrintGrid>0</PrintGrid><PrintPageOrientation>1</PrintPageOrientation><PaperKind>1</PaperKind><PaperSource>7</PaperSource></PrintProps><PageProps><PageWidth Unit='NUM' F='No Formula'>0</PageWidth><PageHeight Unit='NUM' F='No Formula'>0</PageHeight><ShdwOffsetX Unit='NUM' F='No Formula'>0</ShdwOffsetX><ShdwOffsetY Unit='NUM' F='No Formula'>0</ShdwOffsetY><PageScale F='No Formula'>0</PageScale><DrawingScale F='No Formula'>0</DrawingScale><DrawingSizeType F='No Formula'>0</DrawingSizeType><DrawingScaleType F='No Formula'>0</DrawingScaleType><InhibitSnap F='No Formula'>0</InhibitSnap><UIVisibility F='No Formula'>0</UIVisibility><ShdwType F='No Formula'>0</ShdwType><ShdwObliqueAngle Unit='NUM' F='No Formula'>0</ShdwObliqueAngle><ShdwScaleFactor F='No Formula'>0</ShdwScaleFactor></PageProps><Char IX='0'><Font>4</Font><Color>0</Color><Style>0</Style><Case>0</Case><Pos>0</Pos><FontScale>1</FontScale><Size>0.1666666666666667</Size><DblUnderline>0</DblUnderline><Overline>0</Overline><Strikethru>0</Strikethru><Highlight>0</Highlight><DoubleStrikethrough>0</DoubleStrikethrough><RTLText>0</RTLText><UseVertical>0</UseVertical><Letterspace>0</Letterspace><ColorTrans>0</ColorTrans><AsianFont>0</AsianFont><ComplexScriptFont>0</ComplexScriptFont><LocalizeFont>0</LocalizeFont><ComplexScriptSize>-1</ComplexScriptSize><LangID>1033</LangID></Char><Para IX='0'><IndFirst>0</IndFirst><IndLeft>0</IndLeft><IndRight>0</IndRight><SpLine>-1.2</SpLine><SpBefore>0</SpBefore><SpAfter>0</SpAfter><HorzAlign>1</HorzAlign><Bullet>0</Bullet><BulletStr V='null'/><BulletFont>0</BulletFont><LocalizeBulletFont>0</LocalizeBulletFont><BulletFontSize>-1</BulletFontSize><TextPosAfterBullet>0</TextPosAfterBullet><Flags>0</Flags></Para><Tabs IX='0'/></StyleSheet><StyleSheet ID='1' NameU='Text Only' Name='Text Only' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern>0</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>0</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Para IX='0'><IndFirst F='Inh'>0</IndFirst><IndLeft F='Inh'>0</IndLeft><IndRight F='Inh'>0</IndRight><SpLine F='Inh'>-1.2</SpLine><SpBefore F='Inh'>0</SpBefore><SpAfter F='Inh'>0</SpAfter><HorzAlign>0</HorzAlign><Bullet F='Inh'>0</Bullet><BulletStr F='Inh'/><BulletFont F='Inh'>0</BulletFont><LocalizeBulletFont F='Inh'>0</LocalizeBulletFont><BulletFontSize F='Inh'>-1</BulletFontSize><TextPosAfterBullet F='Inh'>0</TextPosAfterBullet><Flags F='Inh'>0</Flags></Para></StyleSheet><StyleSheet ID='2' NameU='None' Name='None' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern>0</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill></StyleSheet><StyleSheet ID='3' NameU='Normal' Name='Normal' LineStyle='0' FillStyle='0' TextStyle='0'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><TextBlock><LeftMargin Unit='PT'>0.05555555555555555</LeftMargin><RightMargin Unit='PT'>0.05555555555555555</RightMargin><TopMargin Unit='PT'>0.05555555555555555</TopMargin><BottomMargin Unit='PT'>0.05555555555555555</BottomMargin><VerticalAlign F='Inh'>1</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock></StyleSheet><StyleSheet ID='4' NameU='Guide' Name='Guide' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight Unit='PT'>0</LineWeight><LineColor>4</LineColor><LinePattern>23</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin Unit='PT' F='Inh'>0.05555555555555555</LeftMargin><RightMargin Unit='PT' F='Inh'>0.05555555555555555</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>2</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Misc><NoObjHandles F='Inh'>0</NoObjHandles><NonPrinting>1</NonPrinting><NoCtlHandles F='Inh'>0</NoCtlHandles><NoAlignBox F='Inh'>0</NoAlignBox><UpdateAlignBox F='Inh'>0</UpdateAlignBox><HideText F='Inh'>0</HideText><DynFeedback F='Inh'>0</DynFeedback><GlueType F='Inh'>0</GlueType><WalkPreference F='Inh'>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType F='Inh'>0</ObjType><Comment F='Inh'/><IsDropSource F='Inh'>0</IsDropSource><NoLiveDynamics F='Inh'>0</NoLiveDynamics><LocalizeMerge F='Inh'>0</LocalizeMerge><Calendar F='Inh'>0</Calendar><LangID F='Inh'>1033</LangID><ShapeKeywords F='Inh'/><DropOnPageScale F='Inh'>1</DropOnPageScale></Misc><Layout><ShapePermeableX>1</ShapePermeableX><ShapePermeableY>1</ShapePermeableY><ShapePermeablePlace>1</ShapePermeablePlace><ShapeFixedCode F='Inh'>0</ShapeFixedCode><ShapePlowCode F='Inh'>0</ShapePlowCode><ShapeRouteStyle F='Inh'>0</ShapeRouteStyle><ConFixedCode F='Inh'>0</ConFixedCode><ConLineJumpCode F='Inh'>0</ConLineJumpCode><ConLineJumpStyle F='Inh'>0</ConLineJumpStyle><ConLineJumpDirX F='Inh'>0</ConLineJumpDirX><ConLineJumpDirY F='Inh'>0</ConLineJumpDirY><ShapePlaceFlip F='Inh'>0</ShapePlaceFlip><ConLineRouteExt F='Inh'>0</ConLineRouteExt><ShapeSplit F='Inh'>0</ShapeSplit><ShapeSplittable F='Inh'>0</ShapeSplittable></Layout><Char IX='0'><Font F='Inh'>4</Font><Color>4</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size>0.125</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID F='Inh'>1033</LangID></Char></StyleSheet><StyleSheet ID='6' NameU='Connector' Name='Connector' LineStyle='7' FillStyle='7' TextStyle='7'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.003333333333333334</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize>1</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize>1</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>0</FillForegnd><FillBkgnd F='Inh'>1</FillBkgnd><FillPattern F='Inh'>1</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin Unit='PT' F='Inh'>0.05555555555555555</LeftMargin><RightMargin Unit='PT' F='Inh'>0.05555555555555555</RightMargin><TopMargin Unit='PT' F='Inh'>0.05555555555555555</TopMargin><BottomMargin Unit='PT' F='Inh'>0.05555555555555555</BottomMargin><VerticalAlign F='Inh'>1</VerticalAlign><TextBkgnd>2</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Char IX='0'><Font F='Inh'>4</Font><Color F='Inh'>0</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size Unit='PT'>0.1111111111111111</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSiz...
[truncated message content] |
|
From: <got...@us...> - 2009-02-27 22:21:06
|
Revision: 196
http://scstudio.svn.sourceforge.net/scstudio/?rev=196&view=rev
Author: gotthardp
Date: 2009-02-27 22:21:01 +0000 (Fri, 27 Feb 2009)
Log Message:
-----------
Attempt to fix the installation problems: automatically install the prerequisite Visual Studio libraries and import the publisher's certificate.
Modified Paths:
--------------
trunk/src/view/visio/scstudio.nsi
trunk/src/view/visio/scstudio.sln
Added Paths:
-----------
trunk/src/view/visio/setup-dependencies/
trunk/src/view/visio/setup-dependencies/setup-dependencies.vdproj
trunk/src/view/visio/setup-nsis/
trunk/src/view/visio/setup-nsis/certificates.cpp
trunk/src/view/visio/setup-nsis/setup-nsis.vcproj
trunk/src/view/visio/setup-nsis/stdafx.cpp
trunk/src/view/visio/setup-nsis/stdafx.h
Modified: trunk/src/view/visio/scstudio.nsi
===================================================================
--- trunk/src/view/visio/scstudio.nsi 2009-02-22 17:32:36 UTC (rev 195)
+++ trunk/src/view/visio/scstudio.nsi 2009-02-27 22:21:01 UTC (rev 196)
@@ -21,7 +21,7 @@
; -- General ---------------------------
-!define VERSION "0.2.0"
+!define VERSION "0.2.1"
Name "Sequence Chart Studio"
OutFile "scstudio-setup-${VERSION}.exe"
@@ -84,6 +84,23 @@
Section "Microsoft Visio Add-On" SecAddon
!define VisioRegPath "Software\Microsoft\Office\11.0\Visio\Application"
+ SetOutPath $TEMP
+ File "setup-dependencies\Release\setup-dependencies.msi"
+ DetailPrint "Installing Microsoft libraries"
+ ExecWait '"msiexec" /i "$TEMP\setup-dependencies.msi" /passive INSTALLDIR="$INSTDIR\bin\"'
+ Delete "$TEMP\setup-dependencies.msi"
+
+ !define CertificateName "gotthardp.cer"
+ File "setup-nsis\Release\nsis.dll"
+ File ${CertificateName}
+ DetailPrint "Installing the publisher certificate"
+ Push "$TEMP\${CertificateName}"
+ CallInstDLL "$TEMP\nsis.dll" InstallPublisherCertificate
+ Pop $R1
+ DetailPrint "InstallPublisherCertificate returned $R1"
+ Delete "$TEMP\${CertificateName}"
+ Delete "$TEMP\nsis.dll"
+
SetOutPath $INSTDIR\bin
File "addon\Release\scstudio.vsl"
File "..\..\..\Release\*.dll"
Modified: trunk/src/view/visio/scstudio.sln
===================================================================
--- trunk/src/view/visio/scstudio.sln 2009-02-22 17:32:36 UTC (rev 195)
+++ trunk/src/view/visio/scstudio.sln 2009-02-27 22:21:01 UTC (rev 196)
@@ -4,16 +4,30 @@
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
+Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "setup-dependencies", "setup-dependencies\setup-dependencies.vdproj", "{31995ACA-7D27-4506-8DBE-101073D3C1B7}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "setup-nsis", "setup-nsis\setup-nsis.vcproj", "{77848F6B-EA64-4917-8E72-21FA1DD2B2F6}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
Debug = Debug
Release = Release
EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
{0E00282C-F48B-4984-A274-5B59E1E2AD49}.Debug.ActiveCfg = Debug|Win32
{0E00282C-F48B-4984-A274-5B59E1E2AD49}.Debug.Build.0 = Debug|Win32
{0E00282C-F48B-4984-A274-5B59E1E2AD49}.Release.ActiveCfg = Release|Win32
{0E00282C-F48B-4984-A274-5B59E1E2AD49}.Release.Build.0 = Release|Win32
+ {31995ACA-7D27-4506-8DBE-101073D3C1B7}.Debug.ActiveCfg = Debug
+ {31995ACA-7D27-4506-8DBE-101073D3C1B7}.Release.ActiveCfg = Release
+ {77848F6B-EA64-4917-8E72-21FA1DD2B2F6}.Debug.ActiveCfg = Debug|Win32
+ {77848F6B-EA64-4917-8E72-21FA1DD2B2F6}.Release.ActiveCfg = Release|Win32
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
Property changes on: trunk/src/view/visio/setup-dependencies
___________________________________________________________________
Added: svn:ignore
+ Debug
Release
Added: trunk/src/view/visio/setup-dependencies/setup-dependencies.vdproj
===================================================================
--- trunk/src/view/visio/setup-dependencies/setup-dependencies.vdproj (rev 0)
+++ trunk/src/view/visio/setup-dependencies/setup-dependencies.vdproj 2009-02-27 22:21:01 UTC (rev 196)
@@ -0,0 +1,514 @@
+"DeployProject"
+{
+"VSVersion" = "3:701"
+"ProjectType" = "8:{2C2AF0D9-9B47-4FE5-BEF2-169778172667}"
+"IsWebType" = "8:FALSE"
+"ProjectName" = "8:setup-dependencies"
+"LanguageId" = "3:1033"
+"CodePage" = "3:1252"
+"UILanguageId" = "3:1033"
+"SccProjectName" = "8:"
+"SccLocalPath" = "8:"
+"SccAuxPath" = "8:"
+"SccProvider" = "8:"
+ "Hierarchy"
+ {
+ "Entry"
+ {
+ "MsmKey" = "8:_14ADFA46A8A34AB6B54A5172F717F93B"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_275E2AB3228448F89CBF3925DA268F1B"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_B159F489B1BB4AE196787DEDFD56D214"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_D8D8C2294754492EAB948C9538972C05"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ }
+ "Configurations"
+ {
+ "Debug"
+ {
+ "DisplayName" = "8:Debug"
+ "IsDebugOnly" = "11:TRUE"
+ "IsReleaseOnly" = "11:FALSE"
+ "OutputFilename" = "8:Debug\\setup-dependencies.msi"
+ "PackageFilesAs" = "3:2"
+ "PackageFileSize" = "3:-2147483648"
+ "CabType" = "3:1"
+ "Compression" = "3:2"
+ "SignOutput" = "11:FALSE"
+ "CertificateFile" = "8:"
+ "PrivateKeyFile" = "8:"
+ "TimeStampServer" = "8:"
+ "InstallerBootstrapper" = "3:2"
+ }
+ "Release"
+ {
+ "DisplayName" = "8:Release"
+ "IsDebugOnly" = "11:FALSE"
+ "IsReleaseOnly" = "11:TRUE"
+ "OutputFilename" = "8:Release\\setup-dependencies.msi"
+ "PackageFilesAs" = "3:2"
+ "PackageFileSize" = "3:-2147483648"
+ "CabType" = "3:1"
+ "Compression" = "3:2"
+ "SignOutput" = "11:FALSE"
+ "CertificateFile" = "8:"
+ "PrivateKeyFile" = "8:"
+ "TimeStampServer" = "8:"
+ "InstallerBootstrapper" = "3:2"
+ }
+ }
+ "Deployable"
+ {
+ "CustomAction"
+ {
+ }
+ "DefaultFeature"
+ {
+ "Name" = "8:DefaultFeature"
+ "Title" = "8:"
+ "Description" = "8:"
+ }
+ "ExternalPersistence"
+ {
+ "LaunchCondition"
+ {
+ }
+ }
+ "Feature"
+ {
+ }
+ "File"
+ {
+ "{A582A373-4685-4296-BEFE-614B80A702C3}:_B159F489B1BB4AE196787DEDFD56D214"
+ {
+ "SourcePath" = "8:C:\\Program Files\\Microsoft CAPICOM 2.1.0.2 SDK\\Lib\\X86\\capicom.dll"
+ "TargetName" = "8:capicom.dll"
+ "Tag" = "8:"
+ "Folder" = "8:_0F19EBDEE77C42FD9994F1B7AA01C76D"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:4"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ }
+ "FileType"
+ {
+ }
+ "Folder"
+ {
+ "{58C0ADA3-3CEA-43BD-A3B3-2EA121BC8217}:_0F19EBDEE77C42FD9994F1B7AA01C76D"
+ {
+ "DefaultLocation" = "8:[ProgramFilesFolder][Manufacturer]\\[ProductName]"
+ "Name" = "8:#1925"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:TARGETDIR"
+ "Folders"
+ {
+ }
+ }
+ "{78BAF5CE-F2E5-45BE-83BC-DB6AF387E941}:_6924DF7BFB6F4F689AC28F2519B5E889"
+ {
+ "Name" = "8:#1916"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:DesktopFolder"
+ "Folders"
+ {
+ }
+ }
+ "{78BAF5CE-F2E5-45BE-83BC-DB6AF387E941}:_FACF431EF97443819BA7AEACAFB702CE"
+ {
+ "Name" = "8:#1919"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:ProgramMenuFolder"
+ "Folders"
+ {
+ }
+ }
+ }
+ "LaunchCondition"
+ {
+ }
+ "Locator"
+ {
+ }
+ "MsiBootstrapper"
+ {
+ "LangId" = "3:1033"
+ }
+ "Product"
+ {
+ "Name" = "8:Microsoft Visual Studio"
+ "ProductName" = "8:Sequence Chart Studio Dependencies"
+ "ProductCode" = "8:{80DD7792-221E-4BA9-A8BC-CAE8FCDB37E8}"
+ "PackageCode" = "8:{2EBE7445-FDDC-4AC5-84B0-5DF7FFA58F2B}"
+ "UpgradeCode" = "8:{F342D056-58E1-46A7-BFEA-F4329E203339}"
+ "RestartWWWService" = "11:FALSE"
+ "RemovePreviousVersions" = "11:FALSE"
+ "DetectNewerInstalledVersion" = "11:TRUE"
+ "ProductVersion" = "8:1.0.0"
+ "Manufacturer" = "8:Brno"
+ "ARPHELPTELEPHONE" = "8:"
+ "ARPHELPLINK" = "8:http://scstudio.sourceforge.net"
+ "Title" = "8:Sequence Chart Studio Dependencies"
+ "Subject" = "8:"
+ "ARPCONTACT" = "8:Petr Gotthard"
+ "Keywords" = "8:"
+ "ARPCOMMENTS" = "8:"
+ "ARPURLINFOABOUT" = "8:"
+ "ARPPRODUCTICON" = "8:"
+ "ARPIconIndex" = "3:0"
+ "SearchPath" = "8:"
+ "UseSystemSearchPath" = "11:TRUE"
+ }
+ "Registry"
+ {
+ "HKLM"
+ {
+ "Keys"
+ {
+ }
+ }
+ "HKCU"
+ {
+ "Keys"
+ {
+ }
+ }
+ "HKCR"
+ {
+ "Keys"
+ {
+ }
+ }
+ "HKU"
+ {
+ "Keys"
+ {
+ }
+ }
+ "HKPU"
+ {
+ "Keys"
+ {
+ }
+ }
+ }
+ "Sequences"
+ {
+ }
+ "Shortcut"
+ {
+ }
+ "UserInterface"
+ {
+ "{8D9DEE8B-DD8B-4F48-9072-C4364E4F4011}:_0452C877B9F84CE487BED6B41580CC41"
+ {
+ "Name" = "8:#1902"
+ "Sequence" = "3:1"
+ "Attributes" = "3:3"
+ "Dialogs"
+ {
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_E72A972D3D0247EE9EB3F2C1185DE98B"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Finished"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdFinishedDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "UpdateText"
+ {
+ "Name" = "8:UpdateText"
+ "DisplayName" = "8:#1058"
+ "Description" = "8:#1158"
+ "Type" = "3:15"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1258"
+ "DefaultValue" = "8:#1258"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{8D9DEE8B-DD8B-4F48-9072-C4364E4F4011}:_07E486B5199E4D1FB476100ECB0592EE"
+ {
+ "Name" = "8:#1901"
+ "Sequence" = "3:2"
+ "Attributes" = "3:2"
+ "Dialogs"
+ {
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_F3394C44E09247F2AD8605A0E2A813EA"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Progress"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdAdminProgressDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "ShowProgress"
+ {
+ "Name" = "8:ShowProgress"
+ "DisplayName" = "8:#1009"
+ "Description" = "8:#1109"
+ "Type" = "3:5"
+ "ContextData" = "8:1;True=1;False=0"
+ "Attributes" = "3:0"
+ "Setting" = "3:0"
+ "Value" = "3:1"
+ "DefaultValue" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{8D9DEE8B-DD8B-4F48-9072-C4364E4F4011}:_306A86054EA846A292989E1AEE3B4081"
+ {
+ "Name" = "8:#1901"
+ "Sequence" = "3:1"
+ "Attributes" = "3:2"
+ "Dialogs"
+ {
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_9063B8046935487D92F2E995ABA151B2"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Progress"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdProgressDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "ShowProgress"
+ {
+ "Name" = "8:ShowProgress"
+ "DisplayName" = "8:#1009"
+ "Description" = "8:#1109"
+ "Type" = "3:5"
+ "ContextData" = "8:1;True=1;False=0"
+ "Attributes" = "3:0"
+ "Setting" = "3:0"
+ "Value" = "3:1"
+ "DefaultValue" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{B654A020-6903-4E6A-A86C-75DC463DB54B}:_49F1CFEC3D7C43959F8B2D7D7550B238"
+ {
+ "UseDynamicProperties" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdUserInterface.wim"
+ }
+ "{8D9DEE8B-DD8B-4F48-9072-C4364E4F4011}:_5717214767004A378EC7B3D1953F8C59"
+ {
+ "Name" = "8:#1902"
+ "Sequence" = "3:2"
+ "Attributes" = "3:3"
+ "Dialogs"
+ {
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_F38D32C09FB94FA4A8DDB233024B6CE1"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Finished"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFinishedDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{B654A020-6903-4E6A-A86C-75DC463DB54B}:_9D1F298E64A94DEF868DF3B828563063"
+ {
+ "UseDynamicProperties" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdBasicDialogs.wim"
+ }
+ "{8D9DEE8B-DD8B-4F48-9072-C4364E4F4011}:_A3D820BA2FFF4999BD02483C03FCD0E3"
+ {
+ "Name" = "8:#1900"
+ "Sequence" = "3:1"
+ "Attributes" = "3:1"
+ "Dialogs"
+ {
+ }
+ }
+ "{8D9DEE8B-DD8B-4F48-9072-C4364E4F4011}:_C35B2E4719314A75AEABA452DDF96EFE"
+ {
+ "Name" = "8:#1900"
+ "Sequence" = "3:2"
+ "Attributes" = "3:1"
+ "Dialogs"
+ {
+ }
+ }
+ }
+ "MergeModule"
+ {
+ "{35A69C6E-5BA4-440D-803D-762B59A45393}:_14ADFA46A8A34AB6B54A5172F717F93B"
+ {
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:C:\\Program Files\\Common Files\\Merge Modules\\VC_User_CRT71_RTL_X86_---.msm"
+ "Properties"
+ {
+ "DIR_RETARGET_TARGETDIR"
+ {
+ "Name" = "8:DIR_RETARGET_TARGETDIR"
+ "DisplayName" = "8:Module Retargetable Folder"
+ "Description" = "8:"
+ "Type" = "3:10"
+ "ContextData" = "8:IsolationDir"
+ "Attributes" = "3:6"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:FALSE"
+ }
+ }
+ "LanguageId" = "3:0"
+ "Exclude" = "11:FALSE"
+ "Folder" = "8:"
+ "Feature" = "8:"
+ "IsolateTo" = "8:"
+ }
+ "{35A69C6E-5BA4-440D-803D-762B59A45393}:_275E2AB3228448F89CBF3925DA268F1B"
+ {
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:C:\\Program Files\\Common Files\\Merge Modules\\VC_User_STL71_RTL_X86_---.msm"
+ "Properties"
+ {
+ "DIR_RETARGET_TARGETDIR"
+ {
+ "Name" = "8:DIR_RETARGET_TARGETDIR"
+ "DisplayName" = "8:Module Retargetable Folder"
+ "Description" = "8:"
+ "Type" = "3:10"
+ "ContextData" = "8:IsolationDir"
+ "Attributes" = "3:6"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:FALSE"
+ }
+ }
+ "LanguageId" = "3:0"
+ "Exclude" = "11:FALSE"
+ "Folder" = "8:"
+ "Feature" = "8:"
+ "IsolateTo" = "8:"
+ }
+ "{35A69C6E-5BA4-440D-803D-762B59A45393}:_D8D8C2294754492EAB948C9538972C05"
+ {
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:C:\\Program Files\\Common Files\\Merge Modules\\VC_User_ATL71_RTL_X86_---.msm"
+ "Properties"
+ {
+ "DIR_RETARGET_TARGETDIR"
+ {
+ "Name" = "8:DIR_RETARGET_TARGETDIR"
+ "DisplayName" = "8:Module Retargetable Folder"
+ "Description" = "8:"
+ "Type" = "3:10"
+ "ContextData" = "8:IsolationDir"
+ "Attributes" = "3:6"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:FALSE"
+ }
+ }
+ "LanguageId" = "3:0"
+ "Exclude" = "11:FALSE"
+ "Folder" = "8:"
+ "Feature" = "8:"
+ "IsolateTo" = "8:"
+ }
+ }
+ "ProjectOutput"
+ {
+ }
+ "VJSharpPlugin"
+ {
+ }
+ }
+}
Property changes on: trunk/src/view/visio/setup-dependencies/setup-dependencies.vdproj
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/src/view/visio/setup-nsis
___________________________________________________________________
Added: svn:ignore
+ Debug
Release
api.h
pluginapi.*
*.cer
Added: trunk/src/view/visio/setup-nsis/certificates.cpp
===================================================================
--- trunk/src/view/visio/setup-nsis/certificates.cpp (rev 0)
+++ trunk/src/view/visio/setup-nsis/certificates.cpp 2009-02-27 22:21:01 UTC (rev 196)
@@ -0,0 +1,93 @@
+/*
+ * scstudio - Sequence Chart Studio
+ * http://scstudio.sourceforge.net
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * Copyright (c) 2009 Petr Gotthard <pet...@ce...>
+ *
+ * $Id$
+ */
+
+#include <stdafx.h>
+#include <tchar.h>
+#include <atlbase.h>
+#include <windows.h>
+
+// include NSIS plug-in headers and library
+// http://nsis.sourceforge.net/Examples/Plugin
+#include "pluginapi.h"
+
+#pragma warning (disable : 4192)
+
+// include Microsoft CAPICOM 2.0
+// http://go.microsoft.com/fwlink/?linkid=84567
+#import "capicom.dll"
+
+extern "C" __declspec(dllexport)
+void __cdecl InstallPublisherCertificate(HWND hwndParent,
+ int string_size, char *variables, stack_t **stacktop)
+{
+ HRESULT hr = S_OK;
+ TCHAR filename[MAX_PATH+1];
+
+ EXDLL_INIT();
+ popstringn(filename, MAX_PATH);
+
+ try
+ {
+ // load certificate
+ CAPICOM::ICertificate2Ptr pICertificate(__uuidof(CAPICOM::Certificate));
+ hr = pICertificate->Load(filename, _T(""),
+ CAPICOM::CAPICOM_KEY_STORAGE_DEFAULT, CAPICOM::CAPICOM_CURRENT_USER_KEY);
+
+ CAPICOM::IStorePtr pIRootStore(__uuidof(CAPICOM::Store));
+ // open a store for root certificates
+ if (FAILED(hr = pIRootStore->Open(
+ CAPICOM::CAPICOM_CURRENT_USER_STORE, _T("ROOT"),
+ CAPICOM::CAPICOM_STORE_OPEN_READ_WRITE)))
+ {
+ ATLTRACE(_T("Error [%#x]: pIStore->Open() failed at line %d.\n"), hr, __LINE__);
+ throw hr;
+ }
+
+ hr = pIRootStore->Add(pICertificate);
+
+ CAPICOM::IStorePtr pITrustedPublisherStore(__uuidof(CAPICOM::Store));
+ // open a certificate store for trusted publishers
+ if (FAILED(hr = pITrustedPublisherStore->Open(
+ CAPICOM::CAPICOM_CURRENT_USER_STORE, _T("TrustedPublisher"),
+ CAPICOM::CAPICOM_STORE_OPEN_READ_WRITE)))
+ {
+ ATLTRACE(_T("Error [%#x]: pIStore->Open() failed at line %d.\n"), hr, __LINE__);
+ throw hr;
+ }
+
+ hr = pITrustedPublisherStore->Add(pICertificate);
+ }
+ catch (_com_error e)
+ {
+ hr = e.Error();
+ ATLTRACE(_T("Error [%#x]: %s.\n"), hr, e.ErrorMessage());
+ }
+ catch (HRESULT hr)
+ {
+ ATLTRACE(_T("Error [%#x]: CAPICOM error.\n"), hr);
+ }
+ catch(...)
+ {
+ hr = CAPICOM::CAPICOM_E_UNKNOWN;
+ ATLTRACE(_T("Unknown error.\n"));
+ }
+
+ pushint(hr);
+}
+
+// $Id$
Property changes on: trunk/src/view/visio/setup-nsis/certificates.cpp
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Added: trunk/src/view/visio/setup-nsis/setup-nsis.vcproj
===================================================================
--- trunk/src/view/visio/setup-nsis/setup-nsis.vcproj (rev 0)
+++ trunk/src/view/visio/setup-nsis/setup-nsis.vcproj 2009-02-27 22:21:01 UTC (rev 196)
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="windows-1250"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="setup-nsis"
+ ProjectGUID="{77848F6B-EA64-4917-8E72-21FA1DD2B2F6}"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="Debug"
+ IntermediateDirectory="Debug"
+ ConfigurationType="2"
+ CharacterSet="0">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="C:\Program Files\Microsoft Platform SDK for Windows XP SP2\Bin"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="TRUE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="5"
+ UsePrecompiledHeader="3"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="pluginapi.lib"
+ OutputFile="$(OutDir)/nsis.dll"
+ LinkIncremental="2"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/nsis.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="Release"
+ IntermediateDirectory="Release"
+ ConfigurationType="2"
+ CharacterSet="0">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="C:\Program Files\Microsoft Platform SDK for Windows XP SP2\Bin"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="4"
+ UsePrecompiledHeader="3"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="pluginapi.lib"
+ OutputFile="$(OutDir)/nsis.dll"
+ LinkIncremental="1"
+ GenerateDebugInformation="TRUE"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+ <File
+ RelativePath=".\certificates.cpp">
+ </File>
+ <File
+ RelativePath=".\stdafx.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"/>
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+ <File
+ RelativePath=".\stdafx.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Resour...
[truncated message content] |
|
From: <got...@us...> - 2009-03-01 16:33:28
|
Revision: 197
http://scstudio.svn.sourceforge.net/scstudio/?rev=197&view=rev
Author: gotthardp
Date: 2009-03-01 16:33:11 +0000 (Sun, 01 Mar 2009)
Log Message:
-----------
Stopped using extra installer for Visual Studio redistributables.
Uninstaller now removes its path from Visio registry.
"Check" is disabled when running studio in OLE container.
Modified Paths:
--------------
trunk/src/view/visio/addon/document.cpp
trunk/src/view/visio/scstudio.nsi
trunk/src/view/visio/scstudio.sln
Removed Paths:
-------------
trunk/src/view/visio/setup-dependencies/
Modified: trunk/src/view/visio/addon/document.cpp
===================================================================
--- trunk/src/view/visio/addon/document.cpp 2009-02-27 22:21:01 UTC (rev 196)
+++ trunk/src/view/visio/addon/document.cpp 2009-03-01 16:33:11 UTC (rev 197)
@@ -302,6 +302,9 @@
Visio::IVMenuPtr menu = menuSet->Menus->AddAt(5);
menu->Caption = "&Check";
+ // many functions are not working in OLE window: repaint, import, error display
+ // disable verification functions when opened from OLE window
+ menu->Enabled = !vsoDocument->InPlace;
Visio::IVMenuItemPtr menuItem1 = menu->MenuItems->Add();
menuItem1->Caption = "&Windows";
Modified: trunk/src/view/visio/scstudio.nsi
===================================================================
--- trunk/src/view/visio/scstudio.nsi 2009-02-27 22:21:01 UTC (rev 196)
+++ trunk/src/view/visio/scstudio.nsi 2009-03-01 16:33:11 UTC (rev 197)
@@ -21,7 +21,7 @@
; -- General ---------------------------
-!define VERSION "0.2.1"
+!define VERSION "0.2.2"
Name "Sequence Chart Studio"
OutFile "scstudio-setup-${VERSION}.exe"
@@ -31,6 +31,8 @@
!define RegMainPath "Software\Sequence Chart Studio"
!define RegModulesPath "Software\Sequence Chart Studio\Modules"
+!define VisioRegPath "Software\Microsoft\Office\11.0\Visio\Application"
+
RequestExecutionLevel user
; -- Pages -----------------------------
@@ -55,7 +57,7 @@
!define StrStr "!insertmacro StrStr"
!define AppendRegStr "!insertmacro AppendRegStr"
-
+
!macro StrStr ResultVar String SubString
Push `${String}`
Push `${SubString}`
@@ -82,14 +84,15 @@
!macroend
Section "Microsoft Visio Add-On" SecAddon
- !define VisioRegPath "Software\Microsoft\Office\11.0\Visio\Application"
+ SetOutPath $INSTDIR\bin
+ DetailPrint "Installing Microsoft libraries"
+ File "redistribute\atl71.dll"
+ File "redistribute\msvcp71.dll"
+ File "redistribute\msvcr71.dll"
+ File "redistribute\capicom.dll"
+ ExecWait 'regsvr32.exe /s "$INSTDIR\capicom.dll"'
SetOutPath $TEMP
- File "setup-dependencies\Release\setup-dependencies.msi"
- DetailPrint "Installing Microsoft libraries"
- ExecWait '"msiexec" /i "$TEMP\setup-dependencies.msi" /passive INSTALLDIR="$INSTDIR\bin\"'
- Delete "$TEMP\setup-dependencies.msi"
-
!define CertificateName "gotthardp.cer"
File "setup-nsis\Release\nsis.dll"
File ${CertificateName}
@@ -143,12 +146,38 @@
; -- Uninstaller Section ---------------
+!define StrRep "!insertmacro StrRep"
+!define RemoveRegStr "!insertmacro RemoveRegStr"
+
+!macro StrRep ResultVar String OldText NewText
+ Push `${String}` ;String to do replacement in (haystack)
+ Push `${OldText}` ;String to replace (needle)
+ Push `${NewText}` ;Replacement
+ Call un.StrRep
+ Pop `${ResultVar}`
+!macroend
+
+; removes ${value} from HKCU registry ${key}, if included
+!macro RemoveRegStr key name value
+ ReadRegStr $0 HKCU ${key} ${name}
+ ; remove the value
+ ${StrRep} $1 $0 "${value}" ""
+ ; remove unnecessary delimiters
+ ${StrRep} $2 $1 ";;" ";"
+ WriteRegStr HKCU ${key} ${name} $2
+!macroend
+
Section "Uninstall"
+ ExecWait 'regsvr32.exe /s /u "$INSTDIR\capicom.dll"'
+
RMDir /r "$INSTDIR\bin"
RMDir /r "$INSTDIR\stencils\Sequence Chart Studio"
RMDir "$INSTDIR\stencils"
- ; TODO: modify Visio add-on paths
+ ; modify Visio add-on paths
+ ${RemoveRegStr} ${VisioRegPath} "AddonsPath" "$INSTDIR\bin"
+ ${RemoveRegStr} ${VisioRegPath} "StencilPath" "$INSTDIR\stencils"
+ ${RemoveRegStr} ${VisioRegPath} "TemplatePath" "$INSTDIR\stencils"
; unregister modules
DeleteRegKey HKCU "Software\Sequence Chart Studio"
@@ -163,7 +192,8 @@
; StrStr $0 "String" "SubString"
; http://nsis.sourceforge.net/StrStr
-Function StrStr
+!macro __StrStr un
+Function ${un}StrStr
/*After this point:
------------------------------------------
$R0 = SubString (input)
@@ -216,5 +246,56 @@
Pop $R1
Exch $R0
FunctionEnd
+!macroend
+!insertmacro __StrStr ""
+; StrRep $0 "String" "OldText" "NewText"
+; http://nsis.sourceforge.net/Replace_Sub_String_%28macro%29
+
+!macro __StrRep un
+Function ${un}StrRep
+ ;Written by dirtydingus 2003-02-20 04:30:09
+ ; USAGE
+ ;Push String to do replacement in (haystack)
+ ;Push String to replace (needle)
+ ;Push Replacement
+ ;Call StrRep
+ ;Pop $R0 result
+
+ Exch $R4 ; $R4 = Replacement String
+ Exch
+ Exch $R3 ; $R3 = String to replace (needle)
+ Exch 2
+ Exch $R1 ; $R1 = String to do replacement in (haystack)
+ Push $R2 ; Replaced haystack
+ Push $R5 ; Len (needle)
+ Push $R6 ; len (haystack)
+ Push $R7 ; Scratch reg
+ StrCpy $R2 ""
+ StrLen $R5 $R3
+ StrLen $R6 $R1
+loop:
+ StrCpy $R7 $R1 $R5
+ StrCmp $R7 $R3 found
+ StrCpy $R7 $R1 1 ; - optimization can be removed if U know len needle=1
+ StrCpy $R2 "$R2$R7"
+ StrCpy $R1 $R1 $R6 1
+ StrCmp $R1 "" done loop
+found:
+ StrCpy $R2 "$R2$R4"
+ StrCpy $R1 $R1 $R6 $R5
+ StrCmp $R1 "" done loop
+done:
+ StrCpy $R3 $R2
+ Pop $R7
+ Pop $R6
+ Pop $R5
+ Pop $R2
+ Pop $R1
+ Pop $R4
+ Exch $R3
+FunctionEnd
+!macroend
+!insertmacro __StrRep "un."
+
; $Id$
Modified: trunk/src/view/visio/scstudio.sln
===================================================================
--- trunk/src/view/visio/scstudio.sln 2009-02-27 22:21:01 UTC (rev 196)
+++ trunk/src/view/visio/scstudio.sln 2009-03-01 16:33:11 UTC (rev 197)
@@ -4,10 +4,6 @@
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
-Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "setup-dependencies", "setup-dependencies\setup-dependencies.vdproj", "{31995ACA-7D27-4506-8DBE-101073D3C1B7}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "setup-nsis", "setup-nsis\setup-nsis.vcproj", "{77848F6B-EA64-4917-8E72-21FA1DD2B2F6}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
@@ -24,8 +20,6 @@
{0E00282C-F48B-4984-A274-5B59E1E2AD49}.Debug.Build.0 = Debug|Win32
{0E00282C-F48B-4984-A274-5B59E1E2AD49}.Release.ActiveCfg = Release|Win32
{0E00282C-F48B-4984-A274-5B59E1E2AD49}.Release.Build.0 = Release|Win32
- {31995ACA-7D27-4506-8DBE-101073D3C1B7}.Debug.ActiveCfg = Debug
- {31995ACA-7D27-4506-8DBE-101073D3C1B7}.Release.ActiveCfg = Release
{77848F6B-EA64-4917-8E72-21FA1DD2B2F6}.Debug.ActiveCfg = Debug|Win32
{77848F6B-EA64-4917-8E72-21FA1DD2B2F6}.Release.ActiveCfg = Release|Win32
EndGlobalSection
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <got...@us...> - 2009-03-01 22:24:19
|
Revision: 198
http://scstudio.svn.sourceforge.net/scstudio/?rev=198&view=rev
Author: gotthardp
Date: 2009-03-01 22:24:16 +0000 (Sun, 01 Mar 2009)
Log Message:
-----------
BUGFIX: Update content.dat automatically to remove "ill" entries.
Modified Paths:
--------------
trunk/src/view/visio/scstudio.nsi
trunk/src/view/visio/setup-nsis/certificates.cpp
trunk/src/view/visio/setup-nsis/setup-nsis.vcproj
trunk/src/view/visio/setup-nsis/stdafx.h
Added Paths:
-----------
trunk/src/view/visio/setup-nsis/filefix.cpp
Modified: trunk/src/view/visio/scstudio.nsi
===================================================================
--- trunk/src/view/visio/scstudio.nsi 2009-03-01 16:33:11 UTC (rev 197)
+++ trunk/src/view/visio/scstudio.nsi 2009-03-01 22:24:16 UTC (rev 198)
@@ -102,6 +102,12 @@
Pop $R1
DetailPrint "InstallPublisherCertificate returned $R1"
Delete "$TEMP\${CertificateName}"
+
+ DetailPrint "Updating Microsoft Visio configuration"
+ ; remove possibly ill entries from the content.dat prior (re-)installation
+ Push "Microsoft\Visio\content.dat"
+ Push "scstudio"
+ CallInstDLL "$TEMP\nsis.dll" RemoveMatchedFileLines
Delete "$TEMP\nsis.dll"
SetOutPath $INSTDIR\bin
Modified: trunk/src/view/visio/setup-nsis/certificates.cpp
===================================================================
--- trunk/src/view/visio/setup-nsis/certificates.cpp 2009-03-01 16:33:11 UTC (rev 197)
+++ trunk/src/view/visio/setup-nsis/certificates.cpp 2009-03-01 22:24:16 UTC (rev 198)
@@ -17,9 +17,7 @@
*/
#include <stdafx.h>
-#include <tchar.h>
#include <atlbase.h>
-#include <windows.h>
// include NSIS plug-in headers and library
// http://nsis.sourceforge.net/Examples/Plugin
Added: trunk/src/view/visio/setup-nsis/filefix.cpp
===================================================================
--- trunk/src/view/visio/setup-nsis/filefix.cpp (rev 0)
+++ trunk/src/view/visio/setup-nsis/filefix.cpp 2009-03-01 22:24:16 UTC (rev 198)
@@ -0,0 +1,101 @@
+/*
+ * scstudio - Sequence Chart Studio
+ * http://scstudio.sourceforge.net
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * Copyright (c) 2009 Petr Gotthard <pet...@ce...>
+ *
+ * $Id$
+ */
+
+#include <stdafx.h>
+#include <stdio.h>
+#include <shlobj.h>
+
+// include NSIS plug-in headers and library
+// http://nsis.sourceforge.net/Examples/Plugin
+#include "pluginapi.h"
+
+extern "C" __declspec(dllexport)
+void __cdecl RemoveMatchedFileLines(HWND hwndParent,
+ int string_size, char *variables, stack_t **stacktop)
+{
+ HRESULT hr = S_OK;
+ TCHAR filename[MAX_PATH+1];
+ TCHAR string[MAX_PATH+1];
+
+ EXDLL_INIT();
+
+ popstringn(string, MAX_PATH);
+ wchar_t needle[MAX_PATH+1];
+ mbstowcs(needle, string, MAX_PATH);
+
+ popstringn(filename, MAX_PATH);
+
+ TCHAR path[MAX_PATH+1];
+ // obtain local application data folder
+ // typically C:\Documents and Settings\username\Local Settings\Application Data
+ BOOL result = SHGetSpecialFolderPath(NULL, path, CSIDL_LOCAL_APPDATA, false);
+
+ TCHAR source_path[MAX_PATH+1];
+ _tcscpy(source_path, path);
+ _tcscat(source_path, _T("\\"));
+ _tcscat(source_path, filename);
+ _tcscat(source_path, _T(".old"));
+
+ TCHAR target_path[MAX_PATH+1];
+ _tcscpy(target_path, path);
+ _tcscat(target_path, _T("\\"));
+ _tcscat(target_path, filename);
+
+ // remove previous filename.old
+ remove(source_path);
+ // rename filename --> filename.old
+ rename(target_path, source_path);
+
+ FILE *infile;
+ if((infile = fopen(source_path, "rb")) == NULL) // filename.old
+ return;
+
+ FILE *outfile;
+ if((outfile = fopen(target_path, "wb")) == NULL) // filename
+ return;
+
+ while(!feof(infile))
+ {
+ static const size_t max_line = 1024;
+ wchar_t line[max_line+1];
+
+ size_t i = 0;
+ // read a single line from the input file
+ while(!feof(infile) && i < max_line)
+ {
+ wchar_t *pos = line+i;
+ size_t res = fread(pos, sizeof(wchar_t), 1, infile);
+ i += res;
+
+ if(*pos == 0x0A)
+ break;
+ }
+
+ // if not matched, write line to the output file
+ if(wcsstr(line, needle) == NULL)
+ fwrite(line, sizeof(wchar_t), i, outfile);
+ }
+
+ fclose(infile);
+ fclose(outfile);
+
+ // remove the filename.old
+ remove(source_path);
+}
+
+// $Id$
Property changes on: trunk/src/view/visio/setup-nsis/filefix.cpp
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Modified: trunk/src/view/visio/setup-nsis/setup-nsis.vcproj
===================================================================
--- trunk/src/view/visio/setup-nsis/setup-nsis.vcproj 2009-03-01 16:33:11 UTC (rev 197)
+++ trunk/src/view/visio/setup-nsis/setup-nsis.vcproj 2009-03-01 22:24:16 UTC (rev 198)
@@ -120,6 +120,9 @@
RelativePath=".\certificates.cpp">
</File>
<File
+ RelativePath=".\filefix.cpp">
+ </File>
+ <File
RelativePath=".\stdafx.cpp">
<FileConfiguration
Name="Debug|Win32">
Modified: trunk/src/view/visio/setup-nsis/stdafx.h
===================================================================
--- trunk/src/view/visio/setup-nsis/stdafx.h 2009-03-01 16:33:11 UTC (rev 197)
+++ trunk/src/view/visio/setup-nsis/stdafx.h 2009-03-01 22:24:16 UTC (rev 198)
@@ -5,3 +5,5 @@
#pragma once
+#include <windows.h>
+#include <tchar.h>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <got...@us...> - 2009-04-15 20:46:58
|
Revision: 220
http://scstudio.svn.sourceforge.net/scstudio/?rev=220&view=rev
Author: gotthardp
Date: 2009-04-15 20:46:42 +0000 (Wed, 15 Apr 2009)
Log Message:
-----------
Installer now supports both Visio 2003 and Visio 2007. Fixed error messages showed when the stencils/templates cannot be found. [Reported by Tom Ziomek.]
Modified Paths:
--------------
trunk/src/view/visio/addon/addon.cpp
trunk/src/view/visio/addon/dllmodule.rc
trunk/src/view/visio/addon/document.cpp
trunk/src/view/visio/addon/visualize.cpp
trunk/src/view/visio/scstudio.nsi
Modified: trunk/src/view/visio/addon/addon.cpp
===================================================================
--- trunk/src/view/visio/addon/addon.cpp 2009-04-14 19:58:30 UTC (rev 219)
+++ trunk/src/view/visio/addon/addon.cpp 2009-04-15 20:46:42 UTC (rev 220)
@@ -170,7 +170,17 @@
// when no document is active
if(vsoDocument == NULL)
- vsoDocument = vsoApp->GetDocuments()->Add(VST_FILE_NAME);
+ {
+ try
+ {
+ vsoDocument = vsoApp->GetDocuments()->Add(VST_FILE_NAME);
+ }
+ catch (_com_error&)
+ {
+ DisplayException(vsoApp, _T("Failed to open a MSC document template."), MB_OK);
+ return VAORC_FAILURE;
+ }
+ }
RegisterPersistentEvents(vsoDocument);
Modified: trunk/src/view/visio/addon/dllmodule.rc
===================================================================
--- trunk/src/view/visio/addon/dllmodule.rc 2009-04-14 19:58:30 UTC (rev 219)
+++ trunk/src/view/visio/addon/dllmodule.rc 2009-04-15 20:46:42 UTC (rev 220)
@@ -72,8 +72,8 @@
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0,2,4,0
- PRODUCTVERSION 0,2,4,0
+ FILEVERSION 0,2,8,0
+ PRODUCTVERSION 0,2,8,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x9L
@@ -90,13 +90,13 @@
BEGIN
VALUE "CompanyName", "Masaryk University Brno"
VALUE "FileDescription", "Microsoft Visio add-on for design and verification of Message Sequence Charts (MSC)."
- VALUE "FileVersion", "0.2.4"
+ VALUE "FileVersion", "0.2.8"
VALUE "InternalName", "scstudio.vsl"
VALUE "LegalCopyright", "(c) Petr Gotthard. All rights reserved."
VALUE "OriginalFilename", "scstudio.vsl"
VALUE "PrivateBuild", "$Revision$"
VALUE "ProductName", "Sequence Chart Studio"
- VALUE "ProductVersion", "0.2.4"
+ VALUE "ProductVersion", "0.2.8"
END
END
BLOCK "VarFileInfo"
Modified: trunk/src/view/visio/addon/document.cpp
===================================================================
--- trunk/src/view/visio/addon/document.cpp 2009-04-14 19:58:30 UTC (rev 219)
+++ trunk/src/view/visio/addon/document.cpp 2009-04-15 20:46:42 UTC (rev 220)
@@ -767,9 +767,20 @@
int CDocumentMonitor::DisplayDocument(const MscPtr& msc)
{
long scope_id = m_vsoApp->BeginUndoScope("Show MSC");
+ Visio::IVDocumentPtr vsoDocument;
- Visio::IVDocumentPtr vsoDocument = m_vsoApp->Documents->Add(VST_FILE_NAME);
+ try
+ {
+ vsoDocument = m_vsoApp->Documents->Add(VST_FILE_NAME);
+ }
+ catch (_com_error&)
+ {
+ DisplayException(m_vsoApp, _T("Failed to open a MSC document template."), MB_OK);
+ m_vsoApp->EndUndoScope(scope_id, false);
+ return 0;
+ }
+
CDrawingVisualizer visualizer(m_vsoApp);
visualizer.visualize_msc(vsoDocument->Pages->Item[1], msc);
Modified: trunk/src/view/visio/addon/visualize.cpp
===================================================================
--- trunk/src/view/visio/addon/visualize.cpp 2009-04-14 19:58:30 UTC (rev 219)
+++ trunk/src/view/visio/addon/visualize.cpp 2009-04-15 20:46:42 UTC (rev 220)
@@ -50,7 +50,7 @@
}
catch (_com_error&)
{
- DisplayException(vsoApp, _T("Bad template or stencils. Visualization failed."), MB_OK);
+ DisplayException(vsoApp, _T("Failed to open MSC stencils in the document."), MB_OK);
}
}
Modified: trunk/src/view/visio/scstudio.nsi
===================================================================
--- trunk/src/view/visio/scstudio.nsi 2009-04-14 19:58:30 UTC (rev 219)
+++ trunk/src/view/visio/scstudio.nsi 2009-04-15 20:46:42 UTC (rev 220)
@@ -21,7 +21,7 @@
; -- General ---------------------------
-!define VERSION "0.2.5"
+!define VERSION "0.2.8"
Name "Sequence Chart Studio"
OutFile "scstudio-setup-${VERSION}.exe"
@@ -31,7 +31,8 @@
!define RegMainPath "Software\Sequence Chart Studio"
!define RegModulesPath "Software\Sequence Chart Studio\Modules"
-!define VisioRegPath "Software\Microsoft\Office\11.0\Visio\Application"
+!define Visio11RegPath "Software\Microsoft\Office\11.0\Visio"
+!define Visio12RegPath "Software\Microsoft\Office\12.0\Visio"
RequestExecutionLevel user
@@ -66,8 +67,14 @@
!macroend
; appends ${value} to HKCU registry ${key}, if not already included
-!macro AppendRegStr key name value
- ReadRegStr $0 HKCU ${key} ${name}
+!macro AppendRegStr key1 key2 name value
+ !define Index 'Line${__LINE__}'
+ Push ${key1}
+ Call CountRegKeys
+ Pop $0
+ IntCmp $0 0 "${Index}-Skip" "${Index}-Skip" 0
+
+ ReadRegStr $0 HKCU "${key1}\${key2}" ${name}
; check if the value already included in the path-list
${StrStr} $1 $0 ${value}
; if no, write value to registry
@@ -79,8 +86,10 @@
${Else}
StrCpy $2 "${value}"
${Endif}
- WriteRegStr HKCU ${key} ${name} $2
+ WriteRegStr HKCU "${key1}\${key2}" ${name} $2
${EndIf}
+"${Index}-Skip:"
+ !undef Index
!macroend
Section "Microsoft Visio Add-On" SecAddon
@@ -114,16 +123,21 @@
File "addon\Release\scstudio.vsl"
File "..\..\..\Release\*.dll"
- ${AppendRegStr} ${VisioRegPath} "AddonsPath" "$INSTDIR\bin"
+ ${AppendRegStr} ${Visio11RegPath} "Application" "AddonsPath" "$INSTDIR\bin"
+ ${AppendRegStr} ${Visio12RegPath} "Application" "AddonsPath" "$INSTDIR\bin"
SetOutPath "$INSTDIR\stencils\Sequence Chart Studio"
File "stencils\Sequence Chart Studio\Basic MSC.vsx"
File "stencils\Sequence Chart Studio\HMSC.vsx"
File "stencils\Sequence Chart Studio\MSC.vtx"
- ; modify Visio add-on paths
- ${AppendRegStr} ${VisioRegPath} "StencilPath" "$INSTDIR\stencils"
- ${AppendRegStr} ${VisioRegPath} "TemplatePath" "$INSTDIR\stencils"
+ ; modify Visio 2003 add-on paths
+ ${AppendRegStr} ${Visio11RegPath} "Application" "StencilPath" "$INSTDIR\stencils"
+ ${AppendRegStr} ${Visio11RegPath} "Application" "TemplatePath" "$INSTDIR\stencils"
+ ; modify Visio 2007 add-on paths
+ ${AppendRegStr} ${Visio12RegPath} "Application" "StencilPath" "$INSTDIR\stencils"
+ ${AppendRegStr} ${Visio12RegPath} "Application" "TemplatePath" "$INSTDIR\stencils"
+
; remove old modules
; FIXME: remove modules with the "sc_" prefix
DeleteRegKey HKCU "${RegMainPath}"
@@ -165,13 +179,21 @@
!macroend
; removes ${value} from HKCU registry ${key}, if included
-!macro RemoveRegStr key name value
- ReadRegStr $0 HKCU ${key} ${name}
+!macro RemoveRegStr key1 key2 name value
+ !define Index 'Line${__LINE__}'
+ Push ${key1}
+ Call un.CountRegKeys
+ Pop $0
+ IntCmp $0 0 "${Index}-Skip" "${Index}-Skip" 0
+
+ ReadRegStr $0 HKCU "${key1}\${key2}" ${name}
; remove the value
${StrRep} $1 $0 "${value}" ""
; remove unnecessary delimiters
${StrRep} $2 $1 ";;" ";"
- WriteRegStr HKCU ${key} ${name} $2
+ WriteRegStr HKCU "${key1}\${key2}" ${name} $2
+"${Index}-Skip:"
+ !undef Index
!macroend
Section "Uninstall"
@@ -181,10 +203,15 @@
RMDir /r "$INSTDIR\stencils\Sequence Chart Studio"
RMDir "$INSTDIR\stencils"
- ; modify Visio add-on paths
- ${RemoveRegStr} ${VisioRegPath} "AddonsPath" "$INSTDIR\bin"
- ${RemoveRegStr} ${VisioRegPath} "StencilPath" "$INSTDIR\stencils"
- ${RemoveRegStr} ${VisioRegPath} "TemplatePath" "$INSTDIR\stencils"
+ ; modify Visio 2003 add-on paths
+ ${RemoveRegStr} ${Visio11RegPath} "Application" "AddonsPath" "$INSTDIR\bin"
+ ${RemoveRegStr} ${Visio11RegPath} "Application" "StencilPath" "$INSTDIR\stencils"
+ ${RemoveRegStr} ${Visio11RegPath} "Application" "TemplatePath" "$INSTDIR\stencils"
+ ; modify Visio 2007 add-on paths
+ ${RemoveRegStr} ${Visio12RegPath} "Application" "AddonsPath" "$INSTDIR\bin"
+ ${RemoveRegStr} ${Visio12RegPath} "Application" "StencilPath" "$INSTDIR\stencils"
+ ${RemoveRegStr} ${Visio12RegPath} "Application" "TemplatePath" "$INSTDIR\stencils"
+
; unregister modules
DeleteRegKey HKCU "Software\Sequence Chart Studio"
@@ -305,4 +332,29 @@
!macroend
!insertmacro __StrRep "un."
+; CountKeys "Subkey"
+; http://nsis.sourceforge.net/Check_for_a_Registry_Key
+
+!macro __CountRegKeys un
+Function ${un}CountRegKeys
+ Exch $R0 ; subkey
+ Push $R1
+ Exch
+ Push $R2
+ StrCpy $R1 "0"
+loop:
+ ;Check for Key
+ EnumRegKey $R2 HKCU $R0 $R1
+ StrCmp $R2 "" done
+ IntOp $R1 $R1 + 1
+ goto loop
+done:
+ Pop $R2
+ Pop $R0
+ Exch $R1
+FunctionEnd
+!macroend
+!insertmacro __CountRegKeys ""
+!insertmacro __CountRegKeys "un."
+
; $Id$
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <got...@us...> - 2009-04-19 18:26:01
|
Revision: 223
http://scstudio.svn.sourceforge.net/scstudio/?rev=223&view=rev
Author: gotthardp
Date: 2009-04-19 18:25:38 +0000 (Sun, 19 Apr 2009)
Log Message:
-----------
Dummy implementation of Action and Condition element for basic MSC.
Modified Paths:
--------------
trunk/src/view/visio/addon/dllmodule.rc
trunk/src/view/visio/addon/extract.cpp
trunk/src/view/visio/addon/extract.h
trunk/src/view/visio/scstudio.nsi
trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx
trunk/src/view/visio/stencils/Sequence Chart Studio/HMSC.vsx
Modified: trunk/src/view/visio/addon/dllmodule.rc
===================================================================
--- trunk/src/view/visio/addon/dllmodule.rc 2009-04-17 16:32:46 UTC (rev 222)
+++ trunk/src/view/visio/addon/dllmodule.rc 2009-04-19 18:25:38 UTC (rev 223)
@@ -72,8 +72,8 @@
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0,2,8,0
- PRODUCTVERSION 0,2,8,0
+ FILEVERSION 0,2,9,0
+ PRODUCTVERSION 0,2,9,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x9L
@@ -90,13 +90,13 @@
BEGIN
VALUE "CompanyName", "Masaryk University Brno"
VALUE "FileDescription", "Microsoft Visio add-on for design and verification of Message Sequence Charts (MSC)."
- VALUE "FileVersion", "0.2.8"
+ VALUE "FileVersion", "0.2.9"
VALUE "InternalName", "scstudio.vsl"
VALUE "LegalCopyright", "(c) Petr Gotthard. All rights reserved."
VALUE "OriginalFilename", "scstudio.vsl"
VALUE "PrivateBuild", "$Revision$"
VALUE "ProductName", "Sequence Chart Studio"
- VALUE "ProductVersion", "0.2.8"
+ VALUE "ProductVersion", "0.2.9"
END
END
BLOCK "VarFileInfo"
Modified: trunk/src/view/visio/addon/extract.cpp
===================================================================
--- trunk/src/view/visio/addon/extract.cpp 2009-04-17 16:32:46 UTC (rev 222)
+++ trunk/src/view/visio/addon/extract.cpp 2009-04-19 18:25:38 UTC (rev 223)
@@ -81,6 +81,8 @@
{_T("bmsc.message"), ST_BMSC_MESSAGE},
{_T("bmsc.message.lost"), ST_BMSC_MESSAGE_LOST},
{_T("bmsc.message.found"), ST_BMSC_MESSAGE_FOUND},
+ {_T("bmsc.action"), ST_BMSC_ACTION},
+ {_T("bmsc.condition"), ST_BMSC_CONDITION},
{_T("bmsc.coregion.box"), ST_BMSC_COREGION},
{_T("bmsc.order.line"), ST_BMSC_ORDER_LINE},
{_T("bmsc.order.arrow"), ST_BMSC_ORDER_ARROW},
@@ -490,6 +492,8 @@
break;
}
+ case ST_BMSC_ACTION:
+ case ST_BMSC_CONDITION:
case ST_BMSC_COREGION:
case ST_BMSC_ORDER_LINE:
case ST_BMSC_ORDER_ARROW:
@@ -595,6 +599,9 @@
}
break;
+ case ST_BMSC_ACTION:
+ case ST_BMSC_CONDITION:
+
case ST_COMMENT:
// ignore comments
continue;
Modified: trunk/src/view/visio/addon/extract.h
===================================================================
--- trunk/src/view/visio/addon/extract.h 2009-04-17 16:32:46 UTC (rev 222)
+++ trunk/src/view/visio/addon/extract.h 2009-04-19 18:25:38 UTC (rev 223)
@@ -28,6 +28,8 @@
ST_BMSC_MESSAGE,
ST_BMSC_MESSAGE_LOST,
ST_BMSC_MESSAGE_FOUND,
+ ST_BMSC_ACTION,
+ ST_BMSC_CONDITION,
ST_BMSC_COREGION,
ST_BMSC_ORDER_LINE,
ST_BMSC_ORDER_ARROW,
Modified: trunk/src/view/visio/scstudio.nsi
===================================================================
--- trunk/src/view/visio/scstudio.nsi 2009-04-17 16:32:46 UTC (rev 222)
+++ trunk/src/view/visio/scstudio.nsi 2009-04-19 18:25:38 UTC (rev 223)
@@ -21,7 +21,7 @@
; -- General ---------------------------
-!define VERSION "0.2.8"
+!define VERSION "0.2.9"
Name "Sequence Chart Studio"
OutFile "scstudio-setup-${VERSION}.exe"
Modified: trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx
===================================================================
--- trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx 2009-04-17 16:32:46 UTC (rev 222)
+++ trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx 2009-04-19 18:25:38 UTC (rev 223)
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8' ?>
-<VisioDocument key='5CA2B6E37177276844B41758016ED3288209F62A1BB91DC5591F80C080862934BAEF5D67F0941962EA4F933D2F4E956D4DF923951E43ACAF5A01C7767899C8E0' start='190' xmlns='http://schemas.microsoft.com/visio/2003/core' metric='0' DocLangID='1033' buildnum='8161' version='11.0' xml:space='preserve'><DocumentProperties><Title>Basic MSC</Title><Creator>Petr Gotthard</Creator><Company>Brno</Company><BuildNumberCreated>738205665</BuildNumberCreated><BuildNumberEdited>738205665</BuildNumberEdited><TimeCreated>2008-12-14T11:32:13</TimeCreated><TimeSaved>2009-02-22T18:23:20</TimeSaved><TimeEdited>2009-02-22T18:23:08</TimeEdited><TimePrinted>2008-12-14T11:32:13</TimePrinted></DocumentProperties><DocumentSettings TopPage='0' DefaultTextStyle='3' DefaultLineStyle='3' DefaultFillStyle='3' DefaultGuideStyle='4'><GlueSettings>9</GlueSettings><SnapSettings>65847</SnapSettings><SnapExtensions>34</SnapExtensions><DynamicGridEnabled>0</DynamicGridEnabled><ProtectStyles>0</ProtectStyles><ProtectShapes>0</ProtectShapes><ProtectMasters>0</ProtectMasters><ProtectBkgnds>0</ProtectBkgnds></DocumentSettings><Colors><ColorEntry IX='0' RGB='#000000'/><ColorEntry IX='1' RGB='#FFFFFF'/><ColorEntry IX='2' RGB='#FF0000'/><ColorEntry IX='3' RGB='#00FF00'/><ColorEntry IX='4' RGB='#0000FF'/><ColorEntry IX='5' RGB='#FFFF00'/><ColorEntry IX='6' RGB='#FF00FF'/><ColorEntry IX='7' RGB='#00FFFF'/><ColorEntry IX='8' RGB='#800000'/><ColorEntry IX='9' RGB='#008000'/><ColorEntry IX='10' RGB='#000080'/><ColorEntry IX='11' RGB='#808000'/><ColorEntry IX='12' RGB='#800080'/><ColorEntry IX='13' RGB='#008080'/><ColorEntry IX='14' RGB='#C0C0C0'/><ColorEntry IX='15' RGB='#E6E6E6'/><ColorEntry IX='16' RGB='#CDCDCD'/><ColorEntry IX='17' RGB='#B3B3B3'/><ColorEntry IX='18' RGB='#9A9A9A'/><ColorEntry IX='19' RGB='#808080'/><ColorEntry IX='20' RGB='#666666'/><ColorEntry IX='21' RGB='#4D4D4D'/><ColorEntry IX='22' RGB='#333333'/><ColorEntry IX='23' RGB='#1A1A1A'/></Colors><FaceNames><FaceName ID='1' Name='Arial Unicode MS' UnicodeRanges='-1 -369098753 63 0' CharSets='1614741759 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='357'/><FaceName ID='2' Name='Symbol' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 5 1 2 1 7 6 2 5 7' Flags='261'/><FaceName ID='3' Name='Wingdings' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 0 0 0 0 0 0 0 0 0' Flags='261'/><FaceName ID='4' Name='Arial' UnicodeRanges='31367 -2147483648 8 0' CharSets='1073742335 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='325'/><FaceName ID='5' Name='SimSun' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='6' Name='PMingLiU' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='7' Name='MS PGothic' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='8' Name='Dotum' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='9' Name='Sylfaen' UnicodeRanges='67110535 0 0 0' CharSets='536871071 0' Panos='1 10 5 2 5 3 6 3 3 3' Flags='325'/><FaceName ID='10' Name='Estrangelo Edessa' UnicodeRanges='-2147459008 0 128 0' CharSets='0 0' Panos='3 8 6 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='11' Name='Vrinda' UnicodeRanges='65539 0 0 0' CharSets='1 0' Panos='1 1 6 0 1 1 1 1 1 1' Flags='325'/><FaceName ID='12' Name='Shruti' UnicodeRanges='262144 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='13' Name='Mangal' UnicodeRanges='32768 0 0 0' CharSets='0 0' Panos='0 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='14' Name='Tunga' UnicodeRanges='4194304 0 0 0' CharSets='0 0' Panos='0 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='15' Name='Sendnya' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='16' Name='Raavi' UnicodeRanges='131072 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='17' Name='Dhenu' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='18' Name='Latha' UnicodeRanges='1048576 0 0 0' CharSets='0 0' Panos='2 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='19' Name='Gautami' UnicodeRanges='2097152 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='20' Name='Cordia New' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='21' Name='MS Farsi' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='22' Name='Gulim' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='23' Name='Times New Roman' UnicodeRanges='31367 -2147483648 8 0' CharSets='1073742335 -65536' Panos='2 2 6 3 5 4 5 2 3 4' Flags='325'/></FaceNames><StyleSheets><StyleSheet ID='0' NameU='No Style' Name='Žádný styl'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.01</LineWeight><LineColor>0</LineColor><LinePattern>1</LinePattern><Rounding>0</Rounding><EndArrowSize>2</EndArrowSize><BeginArrow>0</BeginArrow><EndArrow>0</EndArrow><LineCap>0</LineCap><BeginArrowSize>2</BeginArrowSize><LineColorTrans>0</LineColorTrans></Line><Fill><FillForegnd>1</FillForegnd><FillBkgnd>0</FillBkgnd><FillPattern>1</FillPattern><ShdwForegnd>0</ShdwForegnd><ShdwBkgnd>1</ShdwBkgnd><ShdwPattern>0</ShdwPattern><FillForegndTrans>0</FillForegndTrans><FillBkgndTrans>0</FillBkgndTrans><ShdwForegndTrans>0</ShdwForegndTrans><ShdwBkgndTrans>0</ShdwBkgndTrans><ShapeShdwType>0</ShapeShdwType><ShapeShdwOffsetX>0</ShapeShdwOffsetX><ShapeShdwOffsetY>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>1</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop>0.5</DefaultTabStop><TextDirection>0</TextDirection><TextBkgndTrans>0</TextBkgndTrans></TextBlock><Protection><LockWidth>0</LockWidth><LockHeight>0</LockHeight><LockMoveX>0</LockMoveX><LockMoveY>0</LockMoveY><LockAspect>0</LockAspect><LockDelete>0</LockDelete><LockBegin>0</LockBegin><LockEnd>0</LockEnd><LockRotate>0</LockRotate><LockCrop>0</LockCrop><LockVtxEdit>0</LockVtxEdit><LockTextEdit>0</LockTextEdit><LockFormat>0</LockFormat><LockGroup>0</LockGroup><LockCalcWH>0</LockCalcWH><LockSelect>0</LockSelect><LockCustProp>0</LockCustProp></Protection><Misc><NoObjHandles>0</NoObjHandles><NonPrinting>0</NonPrinting><NoCtlHandles>0</NoCtlHandles><NoAlignBox>0</NoAlignBox><UpdateAlignBox>0</UpdateAlignBox><HideText>0</HideText><DynFeedback>0</DynFeedback><GlueType>0</GlueType><WalkPreference>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType>0</ObjType><Comment V='null'/><IsDropSource>0</IsDropSource><NoLiveDynamics>0</NoLiveDynamics><LocalizeMerge>0</LocalizeMerge><Calendar>0</Calendar><LangID>1033</LangID><ShapeKeywords V='null'/><DropOnPageScale>1</DropOnPageScale></Misc><Event><TheData F='No Formula'>0</TheData><TheText F='No Formula'>0</TheText><EventDblClick F='No Formula'>0</EventDblClick><EventXFMod F='No Formula'>0</EventXFMod><EventDrop F='No Formula'>0</EventDrop></Event><Help><HelpTopic V='null'/><Copyright V='null'/></Help><LayerMem><LayerMember V='null'/></LayerMem><RulerGrid><XRulerDensity>32</XRulerDensity><YRulerDensity>32</YRulerDensity><XRulerOrigin>0</XRulerOrigin><YRulerOrigin>0</YRulerOrigin><XGridDensity>8</XGridDensity><YGridDensity>8</YGridDensity><XGridSpacing>0</XGridSpacing><YGridSpacing>0</YGridSpacing><XGridOrigin>0</XGridOrigin><YGridOrigin>0</YGridOrigin></RulerGrid><Image><Gamma>1</Gamma><Contrast>0.5</Contrast><Brightness>0.5</Brightness><Sharpen>0</Sharpen><Blur>0</Blur><Denoise>0</Denoise><Transparency>0</Transparency></Image><Group><SelectMode>1</SelectMode><DisplayMode>2</DisplayMode><IsDropTarget>0</IsDropTarget><IsSnapTarget>1</IsSnapTarget><IsTextEditTarget>1</IsTextEditTarget><DontMoveChildren>0</DontMoveChildren></Group><Layout><ShapePermeableX>0</ShapePermeableX><ShapePermeableY>0</ShapePermeableY><ShapePermeablePlace>0</ShapePermeablePlace><ShapeFixedCode>0</ShapeFixedCode><ShapePlowCode>0</ShapePlowCode><ShapeRouteStyle>0</ShapeRouteStyle><ConFixedCode>0</ConFixedCode><ConLineJumpCode>0</ConLineJumpCode><ConLineJumpStyle>0</ConLineJumpStyle><ConLineJumpDirX>0</ConLineJumpDirX><ConLineJumpDirY>0</ConLineJumpDirY><ShapePlaceFlip>0</ShapePlaceFlip><ConLineRouteExt>0</ConLineRouteExt><ShapeSplit>0</ShapeSplit><ShapeSplittable>0</ShapeSplittable></Layout><PageLayout><ResizePage>0</ResizePage><EnableGrid>0</EnableGrid><DynamicsOff>0</DynamicsOff><CtrlAsInput>0</CtrlAsInput><PlaceStyle>0</PlaceStyle><RouteStyle>0</RouteStyle><PlaceDepth>0</PlaceDepth><PlowCode>0</PlowCode><LineJumpCode>1</LineJumpCode><LineJumpStyle>0</LineJumpStyle><PageLineJumpDirX>0</PageLineJumpDirX><PageLineJumpDirY>0</PageLineJumpDirY><LineToNodeX>0.125</LineToNodeX><LineToNodeY>0.125</LineToNodeY><BlockSizeX>0.25</BlockSizeX><BlockSizeY>0.25</BlockSizeY><AvenueSizeX>0.375</AvenueSizeX><AvenueSizeY>0.375</AvenueSizeY><LineToLineX>0.125</LineToLineX><LineToLineY>0.125</LineToLineY><LineJumpFactorX>0.66666666666667</LineJumpFactorX><LineJumpFactorY>0.66666666666667</LineJumpFactorY><LineAdjustFrom>0</LineAdjustFrom><LineAdjustTo>0</LineAdjustTo><PlaceFlip>0</PlaceFlip><LineRouteExt>0</LineRouteExt><PageShapeSplit>0</PageShapeSplit></PageLayout><PrintProps><PageLeftMargin>0.25</PageLeftMargin><PageRightMargin>0.25</PageRightMargin><PageTopMargin>0.25</PageTopMargin><PageBottomMargin>0.25</PageBottomMargin><ScaleX>1</ScaleX><ScaleY>1</ScaleY><PagesX>1</PagesX><PagesY>1</PagesY><CenterX>0</CenterX><CenterY>0</CenterY><OnPage>0</OnPage><PrintGrid>0</PrintGrid><PrintPageOrientation>1</PrintPageOrientation><PaperKind>1</PaperKind><PaperSource>7</PaperSource></PrintProps><PageProps><PageWidth Unit='NUM' F='No Formula'>0</PageWidth><PageHeight Unit='NUM' F='No Formula'>0</PageHeight><ShdwOffsetX Unit='NUM' F='No Formula'>0</ShdwOffsetX><ShdwOffsetY Unit='NUM' F='No Formula'>0</ShdwOffsetY><PageScale F='No Formula'>0</PageScale><DrawingScale F='No Formula'>0</DrawingScale><DrawingSizeType F='No Formula'>0</DrawingSizeType><DrawingScaleType F='No Formula'>0</DrawingScaleType><InhibitSnap F='No Formula'>0</InhibitSnap><UIVisibility F='No Formula'>0</UIVisibility><ShdwType F='No Formula'>0</ShdwType><ShdwObliqueAngle Unit='NUM' F='No Formula'>0</ShdwObliqueAngle><ShdwScaleFactor F='No Formula'>0</ShdwScaleFactor></PageProps><Char IX='0'><Font>4</Font><Color>0</Color><Style>0</Style><Case>0</Case><Pos>0</Pos><FontScale>1</FontScale><Size>0.1666666666666667</Size><DblUnderline>0</DblUnderline><Overline>0</Overline><Strikethru>0</Strikethru><Highlight>0</Highlight><DoubleStrikethrough>0</DoubleStrikethrough><RTLText>0</RTLText><UseVertical>0</UseVertical><Letterspace>0</Letterspace><ColorTrans>0</ColorTrans><AsianFont>0</AsianFont><ComplexScriptFont>0</ComplexScriptFont><LocalizeFont>0</LocalizeFont><ComplexScriptSize>-1</ComplexScriptSize><LangID>1033</LangID></Char><Para IX='0'><IndFirst>0</IndFirst><IndLeft>0</IndLeft><IndRight>0</IndRight><SpLine>-1.2</SpLine><SpBefore>0</SpBefore><SpAfter>0</SpAfter><HorzAlign>1</HorzAlign><Bullet>0</Bullet><BulletStr V='null'/><BulletFont>0</BulletFont><LocalizeBulletFont>0</LocalizeBulletFont><BulletFontSize>-1</BulletFontSize><TextPosAfterBullet>0</TextPosAfterBullet><Flags>0</Flags></Para><Tabs IX='0'/></StyleSheet><StyleSheet ID='1' NameU='Text Only' Name='Pouze text' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern>0</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>0</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Para IX='0'><IndFirst F='Inh'>0</IndFirst><IndLeft F='Inh'>0</IndLeft><IndRight F='Inh'>0</IndRight><SpLine F='Inh'>-1.2</SpLine><SpBefore F='Inh'>0</SpBefore><SpAfter F='Inh'>0</SpAfter><HorzAlign>0</HorzAlign><Bullet F='Inh'>0</Bullet><BulletStr F='Inh'/><BulletFont F='Inh'>0</BulletFont><LocalizeBulletFont F='Inh'>0</LocalizeBulletFont><BulletFontSize F='Inh'>-1</BulletFontSize><TextPosAfterBullet F='Inh'>0</TextPosAfterBullet><Flags F='Inh'>0</Flags></Para></StyleSheet><StyleSheet ID='2' NameU='None' Name='Žádný' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern>0</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill></StyleSheet><StyleSheet ID='3' NameU='Normal' Name='Normální' LineStyle='0' FillStyle='0' TextStyle='0'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><TextBlock><LeftMargin Unit='PT'>0.05555555555555555</LeftMargin><RightMargin Unit='PT'>0.05555555555555555</RightMargin><TopMargin Unit='PT'>0.05555555555555555</TopMargin><BottomMargin Unit='PT'>0.05555555555555555</BottomMargin><VerticalAlign F='Inh'>1</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock></StyleSheet><StyleSheet ID='4' NameU='Guide' Name='Guide' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight Unit='PT'>0</LineWeight><LineColor>4</LineColor><LinePattern>23</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin Unit='PT' F='Inh'>0.05555555555555555</LeftMargin><RightMargin Unit='PT' F='Inh'>0.05555555555555555</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>2</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Misc><NoObjHandles F='Inh'>0</NoObjHandles><NonPrinting>1</NonPrinting><NoCtlHandles F='Inh'>0</NoCtlHandles><NoAlignBox F='Inh'>0</NoAlignBox><UpdateAlignBox F='Inh'>0</UpdateAlignBox><HideText F='Inh'>0</HideText><DynFeedback F='Inh'>0</DynFeedback><GlueType F='Inh'>0</GlueType><WalkPreference F='Inh'>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType F='Inh'>0</ObjType><Comment F='Inh'/><IsDropSource F='Inh'>0</IsDropSource><NoLiveDynamics F='Inh'>0</NoLiveDynamics><LocalizeMerge F='Inh'>0</LocalizeMerge><Calendar F='Inh'>0</Calendar><LangID F='Inh'>1033</LangID><ShapeKeywords F='Inh'/><DropOnPageScale F='Inh'>1</DropOnPageScale></Misc><Layout><ShapePermeableX>1</ShapePermeableX><ShapePermeableY>1</ShapePermeableY><ShapePermeablePlace>1</ShapePermeablePlace><ShapeFixedCode F='Inh'>0</ShapeFixedCode><ShapePlowCode F='Inh'>0</ShapePlowCode><ShapeRouteStyle F='Inh'>0</ShapeRouteStyle><ConFixedCode F='Inh'>0</ConFixedCode><ConLineJumpCode F='Inh'>0</ConLineJumpCode><ConLineJumpStyle F='Inh'>0</ConLineJumpStyle><ConLineJumpDirX F='Inh'>0</ConLineJumpDirX><ConLineJumpDirY F='Inh'>0</ConLineJumpDirY><ShapePlaceFlip F='Inh'>0</ShapePlaceFlip><ConLineRouteExt F='Inh'>0</ConLineRouteExt><ShapeSplit F='Inh'>0</ShapeSplit><ShapeSplittable F='Inh'>0</ShapeSplittable></Layout><Char IX='0'><Font F='Inh'>4</Font><Color>4</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size>0.125</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID F='Inh'>1033</LangID></Char></StyleSheet><StyleSheet ID='6' NameU='Connector' Name='Connector' LineStyle='7' FillStyle='7' TextStyle='7'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.003333333333333334</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize>1</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize>1</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>0</FillForegnd><FillBkgnd F='Inh'>1</FillBkgnd><FillPattern F='Inh'>1</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin Unit='PT' F='Inh'>0.05555555555555555</LeftMargin><RightMargin Unit='PT' F='Inh'>0.05555555555555555</RightMargin><TopMargin Unit='PT' F='Inh'>0.05555555555555555</TopMargin><BottomMargin Unit='PT' F='Inh'>0.05555555555555555</BottomMargin><VerticalAlign F='Inh'>1</VerticalAlign><TextBkgnd>2</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Char IX='0'><Font F='Inh'>4</Font><Color F='Inh'>0</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size Unit='PT'>0.1111111111111111</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID>1033</LangID></Char></StyleSheet><StyleSheet ID='7' NameU='Visio 90' Name='Visio 90' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>1</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor>0</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd>0</FillForegnd><FillBkgnd>1</FillBkgnd><FillPattern F='Inh'>1</FillPattern><ShdwForegnd>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><Char IX='0'><Font F='Inh'>4</Font><Color>0</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size F='Inh'>0.1666666666666667</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID>1033</LangID></Char></StyleSheet><StyleSheet ID='8' NameU='Callout' Name='Callout' LineStyle='9' FillStyle='9' TextStyle='9'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.003333333333333334</LineWeight><LineColor F='Inh'>#000000</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize>1</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize>1</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Char IX='0'><Font F='Inh'>4</Font><Color F='Inh'>0</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size Unit='PT'>0.1111111111111111</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID F='Inh'>1033</LangID></Char><Para IX='0'><IndFirst F='Inh'>0</IndFirst><IndLeft F='Inh'>0</IndLeft><IndRight F='Inh'>0</IndRight><SpLine F='Inh'>-1.2</SpLine><SpBefore F='Inh'>0</SpBefore><SpAfter F='Inh'>0</SpAfter><HorzAlign>0</HorzAlign><Bullet F='Inh'>0</Bullet><BulletStr F='Inh'/><BulletFont F='Inh'>0</BulletFont><LocalizeBulletFont F='Inh'>0</LocalizeBulletFont><BulletFontSize F='Inh'>-1</BulletFontSize><TextPosAfterBullet F='Inh'>0</TextPosAfterBullet><Flags F='Inh'>0</Flags></Para></StyleSheet><StyleSheet ID='9' NameU='Visio 00' Name='Visio 00' LineStyle='0' FillStyle='0' TextStyle='0'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>1</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='HSL(0,0,0)'>#000000</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F...
[truncated message content] |
|
From: <got...@us...> - 2009-08-20 19:57:19
|
Revision: 274
http://scstudio.svn.sourceforge.net/scstudio/?rev=274&view=rev
Author: gotthardp
Date: 2009-08-20 19:57:04 +0000 (Thu, 20 Aug 2009)
Log Message:
-----------
Minor installer fixes.
Modified Paths:
--------------
trunk/src/view/visio/addon/dllmodule.rc
trunk/src/view/visio/addon/document.cpp
trunk/src/view/visio/scstudio.nsi
trunk/src/view/visio/setup-nsis/setup-nsis.vcproj
Modified: trunk/src/view/visio/addon/dllmodule.rc
===================================================================
--- trunk/src/view/visio/addon/dllmodule.rc 2009-07-30 07:42:42 UTC (rev 273)
+++ trunk/src/view/visio/addon/dllmodule.rc 2009-08-20 19:57:04 UTC (rev 274)
@@ -89,8 +89,8 @@
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0,3,0,0
- PRODUCTVERSION 0,3,0,0
+ FILEVERSION 0,3,5,0
+ PRODUCTVERSION 0,3,5,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x9L
@@ -107,13 +107,13 @@
BEGIN
VALUE "CompanyName", "Masaryk University Brno"
VALUE "FileDescription", "Microsoft Visio add-on for design and verification of Message Sequence Charts (MSC)."
- VALUE "FileVersion", "0.3.0"
+ VALUE "FileVersion", "0.3.5"
VALUE "InternalName", "scstudio.vsl"
VALUE "LegalCopyright", "(c) Petr Gotthard. All rights reserved."
VALUE "OriginalFilename", "scstudio.vsl"
VALUE "PrivateBuild", "$Revision$"
VALUE "ProductName", "Sequence Chart Studio"
- VALUE "ProductVersion", "0.3.0"
+ VALUE "ProductVersion", "0.3.5"
END
END
BLOCK "VarFileInfo"
Modified: trunk/src/view/visio/addon/document.cpp
===================================================================
--- trunk/src/view/visio/addon/document.cpp 2009-07-30 07:42:42 UTC (rev 273)
+++ trunk/src/view/visio/addon/document.cpp 2009-08-20 19:57:04 UTC (rev 274)
@@ -440,7 +440,7 @@
MscPtr msc = extractor.extract_msc(vsoPage);
if(msc == NULL)
{
- m_reportView->Print(RS_NOTICE,
+ m_reportView->Print(RS_ERROR,
stringize() << "Verification failed. Graphical errors in the drawing.");
return VAORC_FAILURE;
}
Modified: trunk/src/view/visio/scstudio.nsi
===================================================================
--- trunk/src/view/visio/scstudio.nsi 2009-07-30 07:42:42 UTC (rev 273)
+++ trunk/src/view/visio/scstudio.nsi 2009-08-20 19:57:04 UTC (rev 274)
@@ -21,7 +21,7 @@
; -- General ---------------------------
-!define VERSION "0.3.2"
+!define VERSION "0.3.5"
Name "Sequence Chart Studio"
OutFile "scstudio-setup-${VERSION}.exe"
@@ -147,19 +147,21 @@
WriteRegDWORD HKCU '${RegMainPath}' 'OutputLevel' '2'
WriteRegStr HKCU '${RegModulesPath}' 'sc_boundedness' 'scboundedness.dll'
WriteRegStr HKCU '${RegModulesPath}' 'sc_liveness' 'scliveness.dll'
+ WriteRegStr HKCU '${RegModulesPath}' 'sc_localchoice' 'sclocalchoice.dll'
WriteRegStr HKCU '${RegModulesPath}' 'sc_order' 'scorder.dll'
WriteRegStr HKCU '${RegModulesPath}' 'sc_structure' 'scstructure.dll'
WriteRegStr HKCU '${RegModulesPath}' 'sc_race' 'scrace.dll'
WriteRegStr HKCU '${RegModulesPath}' 'sc_z120' 'scZ120.dll'
WriteRegStr HKCU '${RegModulesPath}' 'sc_engmann' 'scengmann.dll'
; configure checks
+ WriteRegDWORD HKCU '${RegChecksPath}\Universal Boundedness' 'Priority' '0'
WriteRegDWORD HKCU '${RegChecksPath}\Deadlock Free' 'Priority' '0'
WriteRegDWORD HKCU '${RegChecksPath}\Livelock Free' 'Priority' '0'
+ WriteRegDWORD HKCU '${RegChecksPath}\Local Choice' 'Priority' '0'
WriteRegDWORD HKCU '${RegChecksPath}\Acyclic' 'Priority' '0'
WriteRegDWORD HKCU '${RegChecksPath}\FIFO' 'Priority' '0'
+ WriteRegDWORD HKCU '${RegChecksPath}\Unique Instance Names' 'Priority' '2'
WriteRegDWORD HKCU '${RegChecksPath}\Race Free' 'Priority' '0'
- WriteRegDWORD HKCU '${RegChecksPath}\Unique Instance Names' 'Priority' '2'
- WriteRegDWORD HKCU '${RegChecksPath}\Universally Bounded' 'Priority' '0'
; Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
Modified: trunk/src/view/visio/setup-nsis/setup-nsis.vcproj
===================================================================
--- trunk/src/view/visio/setup-nsis/setup-nsis.vcproj 2009-07-30 07:42:42 UTC (rev 273)
+++ trunk/src/view/visio/setup-nsis/setup-nsis.vcproj 2009-08-20 19:57:04 UTC (rev 274)
@@ -35,6 +35,7 @@
AdditionalDependencies="pluginapi.lib"
OutputFile="$(OutDir)/nsis.dll"
LinkIncremental="2"
+ IgnoreDefaultLibraryNames="libc.lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/nsis.pdb"
SubSystem="1"
@@ -82,6 +83,7 @@
AdditionalDependencies="pluginapi.lib"
OutputFile="$(OutDir)/nsis.dll"
LinkIncremental="1"
+ IgnoreDefaultLibraryNames="libc.lib"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <got...@us...> - 2009-09-21 19:42:57
|
Revision: 353
http://scstudio.svn.sourceforge.net/scstudio/?rev=353&view=rev
Author: gotthardp
Date: 2009-09-21 19:42:51 +0000 (Mon, 21 Sep 2009)
Log Message:
-----------
New feature: MSC and HMSC comments (text "xxx") are now supported by msc.h and Visio add-on.
Modified Paths:
--------------
trunk/src/view/visio/addon/dllmodule.rc
trunk/src/view/visio/addon/extract.cpp
trunk/src/view/visio/addon/extract.h
trunk/src/view/visio/addon/visualize.cpp
trunk/src/view/visio/addon/visualize.h
trunk/src/view/visio/scstudio.nsi
Modified: trunk/src/view/visio/addon/dllmodule.rc
===================================================================
--- trunk/src/view/visio/addon/dllmodule.rc 2009-09-21 17:12:52 UTC (rev 352)
+++ trunk/src/view/visio/addon/dllmodule.rc 2009-09-21 19:42:51 UTC (rev 353)
@@ -89,8 +89,8 @@
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0,3,10,0
- PRODUCTVERSION 0,3,10,0
+ FILEVERSION 0,3,11,0
+ PRODUCTVERSION 0,3,11,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x9L
@@ -107,13 +107,13 @@
BEGIN
VALUE "CompanyName", "Masaryk University Brno"
VALUE "FileDescription", "Microsoft Visio add-on for design and verification of Message Sequence Charts (MSC)."
- VALUE "FileVersion", "0.3.10"
+ VALUE "FileVersion", "0.3.11"
VALUE "InternalName", "scstudio.vsl"
VALUE "LegalCopyright", "(c) Petr Gotthard. All rights reserved."
VALUE "OriginalFilename", "scstudio.vsl"
VALUE "PrivateBuild", "$Revision$"
VALUE "ProductName", "Sequence Chart Studio"
- VALUE "ProductVersion", "0.3.10"
+ VALUE "ProductVersion", "0.3.11"
END
END
BLOCK "VarFileInfo"
Modified: trunk/src/view/visio/addon/extract.cpp
===================================================================
--- trunk/src/view/visio/addon/extract.cpp 2009-09-21 17:12:52 UTC (rev 352)
+++ trunk/src/view/visio/addon/extract.cpp 2009-09-21 19:42:51 UTC (rev 353)
@@ -208,11 +208,6 @@
page_height - shape->CellsSRC[visSectionObject][visRowXFormOut][visXFormPinY]->Result[visMillimeters]);
}
-Coordinate CDrawingExtractor::GetWidth(Visio::IVShapePtr shape)
-{
- return shape->CellsSRC[visSectionObject][visRowXFormOut][visXFormWidth]->Result[visMillimeters];
-}
-
Coordinate CDrawingExtractor::GetControlPos(Visio::IVShapePtr shape, const wchar_t* row)
{
// walk though all controls
@@ -483,6 +478,7 @@
std::map<long,InstancePtr> instances;
MscMessageMap messages;
TimeRelationEventMap time_relations;
+ std::map<long,CommentPtr> comments;
// first walk through all shapes: create objects
for(int i = 1; i <= vsoPage->Shapes->Count; i++)
@@ -533,16 +529,23 @@
case ST_BMSC_COREGION:
case ST_BMSC_ORDER_LINE:
case ST_BMSC_ORDER_ARROW:
- case ST_COMMENT:
// ignore other basic MSC symbols
break;
+ case ST_COMMENT:
+ {
+ Comment* new_comment = new Comment((const wchar_t*)shape->Text);
+ new_comment->set_position(GetLineEnd(shape));
+ // note: this shape is rotated by 90 degrees
+ new_comment->set_width(GetHeight(shape));
+ comments[shape->ID] = new_comment;
+ break;
+ }
case ST_TEXT:
{
Comment* new_comment = new Comment((const wchar_t*)shape->Text);
new_comment->set_position(GetPinPos(shape));
new_comment->set_width(GetWidth(shape));
-
bmsc->add_comment(new_comment);
break;
}
@@ -898,6 +901,33 @@
rpos->second->glue_events(event_a->second.get(), event_b->second.get());
}
+ // walk though all detected comments
+ for(std::map<long,CommentPtr>::iterator cpos = comments.begin();
+ cpos != comments.end(); cpos++)
+ {
+ Visio::IVShapePtr shape = vsoPage->Shapes->ItemFromID[cpos->first];
+
+ // (1) check if the comment is connected to an event
+ SPoint point;
+ point.m_x = shape->CellsSRC[visSectionObject][visRowXForm1D][vis1DBeginX]->Result[0];
+ point.m_y = shape->CellsSRC[visSectionObject][visRowXForm1D][vis1DBeginY]->Result[0];
+ // find event at the point
+ EventPointMap::iterator event = events.find(point);
+
+ if(event != events.end())
+ {
+ // connect comment to the events
+ event->second->add_comment(cpos->second);
+ continue;
+ }
+
+ // TODO: Comments may be connected to other elements (e.g. instances)
+
+ PrintError(stringize() << page_name << ": "
+ << "Disconnected comment '" << shape->Name << "'",
+ shapelist() << shape);
+ }
+
// return NULL on error
if(m_was_error)
{
@@ -1128,6 +1158,7 @@
std::map<long,HMscNodePtr> nodes;
std::map<long,NodeRelationPtr> relations;
TimeRelationRefNodeMap time_relations;
+ std::map<long,CommentPtr> comments;
// first walk through all shapes: create objects
for(int i = 1; i <= vsoPage->Shapes->Count; i++)
@@ -1149,15 +1180,19 @@
break;
case ST_COMMENT:
- // ignore text and comments
+ {
+ Comment* new_comment = new Comment((const wchar_t*)shape->Text);
+ new_comment->set_position(GetLineEnd(shape));
+ // note: this shape is rotated by 90 degrees
+ new_comment->set_width(GetHeight(shape));
+ comments[shape->ID] = new_comment;
break;
-
+ }
case ST_TEXT:
{
Comment* new_comment = new Comment((const wchar_t*)shape->Text);
new_comment->set_position(GetPinPos(shape));
new_comment->set_width(GetWidth(shape));
-
hmsc->add_comment(new_comment);
break;
}
@@ -1414,6 +1449,42 @@
dir2 == TD_BOTTOM, node2.get());
}
+ // walk though all detected comments
+ for(std::map<long,CommentPtr>::iterator cpos = comments.begin();
+ cpos != comments.end(); cpos++)
+ {
+ Visio::IVShapePtr comment = vsoPage->Shapes->ItemFromID[cpos->first];
+ // check the comment is properly connected
+ if(comment->Connects->Count < 1)
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Disconnected comment '" << comment->Name << "'",
+ shapelist() << comment);
+ continue;
+ }
+ else if(comment->Connects->Count > 1)
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Wrongly attached comment.",
+ shapelist() << comment);
+ continue;
+ }
+
+ Visio::IVConnectPtr connect = comment->Connects->Item[1];
+ Visio::IVShapePtr shape = connect->ToSheet;
+
+ std::map<long,HMscNodePtr>::iterator npos = nodes.find(shape->ID);
+ if(npos == nodes.end() || connect->FromPart != visBegin)
+ {
+ PrintError(stringize() << page_name << ": "
+ << "Wrongly attached comment.",
+ shapelist() << comment);
+ continue;
+ }
+
+ (*npos).second->add_comment((*cpos).second);
+ }
+
// return NULL on error
if(m_was_error)
{
Modified: trunk/src/view/visio/addon/extract.h
===================================================================
--- trunk/src/view/visio/addon/extract.h 2009-09-21 17:12:52 UTC (rev 352)
+++ trunk/src/view/visio/addon/extract.h 2009-09-21 19:42:51 UTC (rev 353)
@@ -131,7 +131,14 @@
MscPoint GetLineBegin(Visio::IVShapePtr shape);
MscPoint GetLineEnd(Visio::IVShapePtr shape);
MscPoint GetPinPos(Visio::IVShapePtr shape);
- Coordinate GetWidth(Visio::IVShapePtr shape);
+ Coordinate GetWidth(Visio::IVShapePtr shape)
+ {
+ return shape->CellsSRC[visSectionObject][visRowXFormOut][visXFormWidth]->Result[visMillimeters];
+ }
+ Coordinate GetHeight(Visio::IVShapePtr shape)
+ {
+ return shape->CellsSRC[visSectionObject][visRowXFormOut][visXFormHeight]->Result[visMillimeters];
+ }
Coordinate GetControlPos(Visio::IVShapePtr shape, const wchar_t* row);
//! assert the given shape has no connections to its sub-shapes
Modified: trunk/src/view/visio/addon/visualize.cpp
===================================================================
--- trunk/src/view/visio/addon/visualize.cpp 2009-09-21 17:12:52 UTC (rev 352)
+++ trunk/src/view/visio/addon/visualize.cpp 2009-09-21 19:42:51 UTC (rev 353)
@@ -151,6 +151,17 @@
cell->GlueToPos(where, pos.get_y()/max(1.0,width), pos.get_x()/max(1.0,height));
}
+void GlueBeginToShape(Visio::IVShapePtr what, Visio::IVShapePtr where)
+{
+ double height = where->CellsSRC[visSectionObject][visRowXFormOut][visXFormHeight]->Result[visMillimeters];
+ double width = where->CellsSRC[visSectionObject][visRowXFormOut][visXFormWidth]->Result[visMillimeters];
+
+ Visio::IVCellPtr from_cell = what->CellsSRC[visSectionObject][visRowXForm1D][vis1DBeginX];
+ Visio::IVCellPtr to_cell = where->CellsSRC[visSectionObject][visRowXFormOut][visXFormPinX];
+
+ from_cell->GlueTo(to_cell);
+}
+
void GlueEndToPos(Visio::IVShapePtr what, Visio::IVShapePtr where, const MscPoint& pos)
{
double height = where->CellsSRC[visSectionObject][visRowXFormOut][visXFormHeight]->Result[visMillimeters];
@@ -230,6 +241,15 @@
Visio::IVShapePtr marker = vsoPage->Drop(marker_master, posX, posY);
}
+
+ for(CommentPtrSet::const_iterator cpos = event->get_comments().begin();
+ cpos != event->get_comments().end(); cpos++)
+ {
+ Visio::IVShapePtr comment = DropComment(vsoPage, *cpos);
+
+ GlueBeginToPos(comment, parent, event->get_position());
+ SetLineEnd(comment, (*cpos)->get_position());
+ }
}
Visio::IVShapePtr CDrawingVisualizer::connect_events(Visio::IVPagePtr vsoPage,
@@ -610,6 +630,15 @@
show_time_relations2(vsoPage, nodes, reference_node, shape, tops);
show_time_relations2(vsoPage, nodes, reference_node, shape, bottoms);
}
+
+ for(CommentPtrSet::const_iterator cpos = (*npos)->get_comments().begin();
+ cpos != (*npos)->get_comments().end(); cpos++)
+ {
+ Visio::IVShapePtr comment = DropComment(vsoPage, *cpos);
+
+ GlueBeginToShape(comment, shape);
+ SetLineEnd(comment, (*cpos)->get_position());
+ }
}
}
Modified: trunk/src/view/visio/addon/visualize.h
===================================================================
--- trunk/src/view/visio/addon/visualize.h 2009-09-21 17:12:52 UTC (rev 352)
+++ trunk/src/view/visio/addon/visualize.h 2009-09-21 19:42:51 UTC (rev 353)
@@ -69,6 +69,19 @@
void show_time_relations(Visio::IVPagePtr vsoPage, TimeRelationEventPtrMap& time_relations,
Visio::IVShapePtr parent, EventPtr event);
+ template<class C>
+ Visio::IVShapePtr DropComment(Visio::IVPagePtr vsoPage, boost::intrusive_ptr<C> comment)
+ {
+ Visio::IVShapePtr result = vsoPage->Drop(m_comment_master, 0, 0);
+ result->Text = comment->get_text().c_str();
+ result->CellsSRC[visSectionObject][visRowXFormOut][visXFormHeight]->Result[visMillimeters] = comment->get_width();
+
+ if(comment->get_marked())
+ MarkShape(result);
+
+ return result;
+ }
+
void visualize_msc_base(Visio::IVPagePtr vsoPage, const MscPtr& msc);
void visualize_bmsc(Visio::IVPagePtr vsoPage, const BMscPtr& bmsc);
Modified: trunk/src/view/visio/scstudio.nsi
===================================================================
--- trunk/src/view/visio/scstudio.nsi 2009-09-21 17:12:52 UTC (rev 352)
+++ trunk/src/view/visio/scstudio.nsi 2009-09-21 19:42:51 UTC (rev 353)
@@ -21,7 +21,7 @@
; -- General ---------------------------
-!define VERSION "0.3.10"
+!define VERSION "0.3.11"
Name "Sequence Chart Studio"
OutFile "scstudio-setup-${VERSION}.exe"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <got...@us...> - 2009-10-13 17:12:48
|
Revision: 425
http://scstudio.svn.sourceforge.net/scstudio/?rev=425&view=rev
Author: gotthardp
Date: 2009-10-13 17:12:25 +0000 (Tue, 13 Oct 2009)
Log Message:
-----------
Visio: Fixed SIGSEGV when visualizing disconnected time constraint.
Modified Paths:
--------------
trunk/src/view/visio/addon/dllmodule.rc
trunk/src/view/visio/addon/document.cpp
trunk/src/view/visio/addon/visualize.cpp
trunk/src/view/visio/scstudio.nsi
Modified: trunk/src/view/visio/addon/dllmodule.rc
===================================================================
--- trunk/src/view/visio/addon/dllmodule.rc 2009-10-13 10:58:58 UTC (rev 424)
+++ trunk/src/view/visio/addon/dllmodule.rc 2009-10-13 17:12:25 UTC (rev 425)
@@ -89,8 +89,8 @@
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0,3,15,0
- PRODUCTVERSION 0,3,15,0
+ FILEVERSION 0,3,16,0
+ PRODUCTVERSION 0,3,16,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x9L
@@ -107,13 +107,13 @@
BEGIN
VALUE "CompanyName", "Masaryk University Brno"
VALUE "FileDescription", "Microsoft Visio add-on for design and verification of Message Sequence Charts (MSC)."
- VALUE "FileVersion", "0.3.15"
+ VALUE "FileVersion", "0.3.16"
VALUE "InternalName", "scstudio.vsl"
VALUE "LegalCopyright", "(c) Petr Gotthard. All rights reserved."
VALUE "OriginalFilename", "scstudio.vsl"
VALUE "PrivateBuild", "$Revision$"
VALUE "ProductName", "Sequence Chart Studio"
- VALUE "ProductVersion", "0.3.15"
+ VALUE "ProductVersion", "0.3.16"
END
END
BLOCK "VarFileInfo"
Modified: trunk/src/view/visio/addon/document.cpp
===================================================================
--- trunk/src/view/visio/addon/document.cpp 2009-10-13 10:58:58 UTC (rev 424)
+++ trunk/src/view/visio/addon/document.cpp 2009-10-13 17:12:25 UTC (rev 425)
@@ -1359,15 +1359,33 @@
}
catch (_com_error&)
{
- DisplayException(m_vsoApp, _T("Failed to open a MSC document template."), MB_OK);
+ m_vsoApp->EndUndoScope(scope_id, false);
+ m_reportView->Print(RS_ERROR,
+ _T("Cannot display MSC due to internal error: Bad document template."));
+ return 0;
+ }
+
+ try
+ {
+ CDrawingVisualizer visualizer(m_vsoApp);
+ visualizer.visualize_msc(vsoDocument->Pages->Item[1], msc);
+ }
+ catch(std::exception &exc)
+ {
m_vsoApp->EndUndoScope(scope_id, false);
+
+ short oldresp = m_vsoApp->AlertResponse;
+ m_vsoApp->AlertResponse = IDNO; // avoid the "Save? Yes-No" dialog
+ // close the document
+ vsoDocument->Close();
+ m_vsoApp->AlertResponse = oldresp;
+
+ m_reportView->Print(RS_ERROR, stringize()
+ << _T("Cannot display MSC due to internal error: ") << exc.what());
return 0;
}
- CDrawingVisualizer visualizer(m_vsoApp);
- visualizer.visualize_msc(vsoDocument->Pages->Item[1], msc);
-
m_vsoApp->EndUndoScope(scope_id, true);
return 0;
}
Modified: trunk/src/view/visio/addon/visualize.cpp
===================================================================
--- trunk/src/view/visio/addon/visualize.cpp 2009-10-13 10:58:58 UTC (rev 424)
+++ trunk/src/view/visio/addon/visualize.cpp 2009-10-13 17:12:25 UTC (rev 425)
@@ -561,6 +561,9 @@
if((*rpos)->get_ref_node_a() != reference_node)
continue;
+ if((*rpos)->get_ref_node_a() == NULL || (*rpos)->get_ref_node_b() == NULL)
+ throw std::invalid_argument("Disconnected time constraint.");
+
Visio::IVShapePtr dimension = drop_time_relation(vsoPage, *rpos);
Visio::IVCellPtr from_cell = dimension->CellsSRC[visSectionObject][visRowXForm1D][vis1DBeginX];
Modified: trunk/src/view/visio/scstudio.nsi
===================================================================
--- trunk/src/view/visio/scstudio.nsi 2009-10-13 10:58:58 UTC (rev 424)
+++ trunk/src/view/visio/scstudio.nsi 2009-10-13 17:12:25 UTC (rev 425)
@@ -21,7 +21,7 @@
; -- General ---------------------------
-!define VERSION "0.3.15"
+!define VERSION "0.3.16"
Name "Sequence Chart Studio"
OutFile "scstudio-setup-${VERSION}.exe"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <got...@us...> - 2009-11-14 11:12:08
|
Revision: 458
http://scstudio.svn.sourceforge.net/scstudio/?rev=458&view=rev
Author: gotthardp
Date: 2009-11-14 11:11:52 +0000 (Sat, 14 Nov 2009)
Log Message:
-----------
Updated installer for the new Nonrecursivity checker.
Modified Paths:
--------------
trunk/src/view/visio/addon/dllmodule.rc
trunk/src/view/visio/scstudio.nsi
Modified: trunk/src/view/visio/addon/dllmodule.rc
===================================================================
--- trunk/src/view/visio/addon/dllmodule.rc 2009-11-14 08:54:54 UTC (rev 457)
+++ trunk/src/view/visio/addon/dllmodule.rc 2009-11-14 11:11:52 UTC (rev 458)
@@ -89,8 +89,8 @@
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0,3,21,0
- PRODUCTVERSION 0,3,21,0
+ FILEVERSION 0,3,23,0
+ PRODUCTVERSION 0,3,23,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x9L
@@ -107,13 +107,13 @@
BEGIN
VALUE "CompanyName", "Masaryk University Brno"
VALUE "FileDescription", "Microsoft Visio add-on for design and verification of Message Sequence Charts (MSC)."
- VALUE "FileVersion", "0.3.21"
+ VALUE "FileVersion", "0.3.23"
VALUE "InternalName", "scstudio.vsl"
VALUE "LegalCopyright", "(c) Petr Gotthard. All rights reserved."
VALUE "OriginalFilename", "scstudio.vsl"
VALUE "PrivateBuild", "$Revision$"
VALUE "ProductName", "Sequence Chart Studio"
- VALUE "ProductVersion", "0.3.21"
+ VALUE "ProductVersion", "0.3.23"
END
END
BLOCK "VarFileInfo"
Modified: trunk/src/view/visio/scstudio.nsi
===================================================================
--- trunk/src/view/visio/scstudio.nsi 2009-11-14 08:54:54 UTC (rev 457)
+++ trunk/src/view/visio/scstudio.nsi 2009-11-14 11:11:52 UTC (rev 458)
@@ -21,7 +21,7 @@
; -- General ---------------------------
-!define VERSION "0.3.21"
+!define VERSION "0.3.23"
Name "Sequence Chart Studio"
OutFile "scstudio-setup-${VERSION}.exe"
@@ -167,6 +167,7 @@
WriteRegDWORD HKCU '${RegChecksPath}\Acyclic' 'Priority' '0'
WriteRegDWORD HKCU '${RegChecksPath}\FIFO' 'Priority' '0'
WriteRegDWORD HKCU '${RegChecksPath}\Unique Instance Names' 'Priority' '2'
+ WriteRegDWORD HKCU '${RegChecksPath}\Nonrecursivity' 'Priority' '2'
WriteRegDWORD HKCU '${RegChecksPath}\Race Free' 'Priority' '0'
WriteRegDWORD HKCU '${RegChecksPath}\Strong Realizability' 'Priority' '0'
WriteRegDWORD HKCU '${RegChecksPath}\Time Constraints' 'Priority' '0'
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <got...@us...> - 2009-11-24 22:10:35
|
Revision: 487
http://scstudio.svn.sourceforge.net/scstudio/?rev=487&view=rev
Author: gotthardp
Date: 2009-11-24 22:10:16 +0000 (Tue, 24 Nov 2009)
Log Message:
-----------
Bug fix: Correct menu initialization if multiple .vsd files are opened simultaneously.
Modified Paths:
--------------
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/stencils/Sequence Chart Studio/Basic MSC.vsx
trunk/src/view/visio/stencils/Sequence Chart Studio/HMSC.vsx
Modified: trunk/src/view/visio/addon/addon.cpp
===================================================================
--- trunk/src/view/visio/addon/addon.cpp 2009-11-23 22:55:29 UTC (rev 486)
+++ trunk/src/view/visio/addon/addon.cpp 2009-11-24 22:10:16 UTC (rev 487)
@@ -112,14 +112,13 @@
return VAORC_SUCCESS;
}
- Visio::IVDocumentPtr vsoDocument = vsoApp->GetActiveDocument();
-
// If the command-line argument is NULL, this add-on was called
// by selecting the VSL from Visio Tools|Macros menu.
if(pV2L->lpCmdLineArgs == NULL)
{
TRACE("CStudioAddon::Run() args=NULL");
+ Visio::IVDocumentPtr vsoDocument = vsoApp->GetActiveDocument();
// when no document is active
if(vsoDocument == NULL)
{
@@ -226,6 +225,20 @@
}
free(cmdline);
+ Visio::IVDocumentPtr vsoDocument;
+ // if valid, use the document of the given index
+ // note: the documents collection is one-based
+ if(iDocumentIndex > 0 && iDocumentIndex <= vsoApp->Documents->Count)
+ {
+ TRACE("CStudioAddon::Run() using the document id=" << iDocumentIndex);
+ vsoDocument = vsoApp->Documents->Item[iDocumentIndex];
+ }
+ else
+ {
+ TRACE("CStudioAddon::Run() using the active document");
+ vsoDocument = vsoApp->GetActiveDocument();
+ }
+
RegisterPersistentEvents(vsoDocument);
CDocumentMonitor *pDocumentMonitor = GetDocumentMonitor(vsoApp, vsoDocument);
@@ -455,6 +468,7 @@
{
CDocumentMonitor *pDocumentMonitor = NULL;
+ TRACE("CStudioAddon::GetDocumentMonitor() called for " << vsoDocument->Name);
long nID = vsoDocument->GetID();
DocumentMonitorsMap::iterator documentIter = m_DocumentMonitors.find(nID);
@@ -491,7 +505,7 @@
// Create a monitor class to keep track of this document and the Events
// being monitored for this document.
pDocumentMonitor = new CDocumentMonitor(this, vsoApp, vsoDocument);
- pDocumentMonitor->InitMenu(vsoApp);
+ pDocumentMonitor->InitMenu(vsoApp, vsoDocument);
// register BeforeDocumentClose
vsoEvent = vsoDocumentEventList->AddAdvise(visEvtBeforeDocumentClose, varSink, _T(""), _T(""));
Modified: trunk/src/view/visio/addon/document.cpp
===================================================================
--- trunk/src/view/visio/addon/document.cpp 2009-11-23 22:55:29 UTC (rev 486)
+++ trunk/src/view/visio/addon/document.cpp 2009-11-24 22:10:16 UTC (rev 487)
@@ -327,11 +327,10 @@
return VAORC_SUCCESS;
}
-void CDocumentMonitor::InitMenu(Visio::IVApplicationPtr vsoApp)
+void CDocumentMonitor::InitMenu(Visio::IVApplicationPtr vsoApp, Visio::IVDocumentPtr vsoDocument)
{
Visio::IVUIObjectPtr vsoMenus = NULL;
- Visio::IVDocumentPtr vsoDocument = vsoApp->GetActiveDocument();
if(vsoDocument != NULL)
{
Visio::IVUIObjectPtr docMenus = vsoDocument->CustomMenus;
Modified: trunk/src/view/visio/addon/document.h
===================================================================
--- trunk/src/view/visio/addon/document.h 2009-11-23 22:55:29 UTC (rev 486)
+++ trunk/src/view/visio/addon/document.h 2009-11-24 22:10:16 UTC (rev 487)
@@ -43,7 +43,7 @@
VAORC OnDropShape(int iDocumentIndex, int iPageIndex, _bstr_t sShapeU);
VAORC OnOpenReference(int iDocumentIndex, int iPageIndex, _bstr_t sShapeU);
- void InitMenu(Visio::IVApplicationPtr vsoApp);
+ void InitMenu(Visio::IVApplicationPtr vsoApp, Visio::IVDocumentPtr vsoDocument);
VAORC OnMenuRun(Visio::IVApplicationPtr vsoApp);
VAORC OnMenuWindowsReporter(Visio::IVApplicationPtr vsoApp);
Modified: trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx
===================================================================
--- trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx 2009-11-23 22:55:29 UTC (rev 486)
+++ trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx 2009-11-24 22:10:16 UTC (rev 487)
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8' ?>
-<VisioDocument key='4353759957E77E17A27612470E7CA7E211CCCFCBC60BC0DBC4FDD0DE8BB5CF403833A840734792A4F5DB4812FDAB700CF583D756D4AD73513874BF729FA755A1' start='190' xmlns='http://schemas.microsoft.com/visio/2003/core' metric='0' DocLangID='1033' buildnum='8161' version='11.0' xml:space='preserve'><DocumentProperties><Title>Basic MSC</Title><Creator>Petr Gotthard</Creator><Company>Brno</Company><BuildNumberCreated>738205665</BuildNumberCreated><BuildNumberEdited>738205665</BuildNumberEdited><TimeCreated>2008-12-14T11:32:13</TimeCreated><TimeSaved>2009-10-26T11:28:45</TimeSaved><TimeEdited>2009-10-26T11:28:42</TimeEdited><TimePrinted>2008-12-14T11:32:13</TimePrinted></DocumentProperties><DocumentSettings TopPage='0' DefaultTextStyle='3' DefaultLineStyle='3' DefaultFillStyle='3' DefaultGuideStyle='4'><GlueSettings>9</GlueSettings><SnapSettings>65847</SnapSettings><SnapExtensions>34</SnapExtensions><DynamicGridEnabled>0</DynamicGridEnabled><ProtectStyles>0</ProtectStyles><ProtectShapes>0</ProtectShapes><ProtectMasters>0</ProtectMasters><ProtectBkgnds>0</ProtectBkgnds></DocumentSettings><Colors><ColorEntry IX='0' RGB='#000000'/><ColorEntry IX='1' RGB='#FFFFFF'/><ColorEntry IX='2' RGB='#FF0000'/><ColorEntry IX='3' RGB='#00FF00'/><ColorEntry IX='4' RGB='#0000FF'/><ColorEntry IX='5' RGB='#FFFF00'/><ColorEntry IX='6' RGB='#FF00FF'/><ColorEntry IX='7' RGB='#00FFFF'/><ColorEntry IX='8' RGB='#800000'/><ColorEntry IX='9' RGB='#008000'/><ColorEntry IX='10' RGB='#000080'/><ColorEntry IX='11' RGB='#808000'/><ColorEntry IX='12' RGB='#800080'/><ColorEntry IX='13' RGB='#008080'/><ColorEntry IX='14' RGB='#C0C0C0'/><ColorEntry IX='15' RGB='#E6E6E6'/><ColorEntry IX='16' RGB='#CDCDCD'/><ColorEntry IX='17' RGB='#B3B3B3'/><ColorEntry IX='18' RGB='#9A9A9A'/><ColorEntry IX='19' RGB='#808080'/><ColorEntry IX='20' RGB='#666666'/><ColorEntry IX='21' RGB='#4D4D4D'/><ColorEntry IX='22' RGB='#333333'/><ColorEntry IX='23' RGB='#1A1A1A'/></Colors><FaceNames><FaceName ID='1' Name='Arial Unicode MS' UnicodeRanges='-1 -369098753 63 0' CharSets='1614742015 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='357'/><FaceName ID='2' Name='Symbol' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 5 1 2 1 7 6 2 5 7' Flags='261'/><FaceName ID='3' Name='Wingdings' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 0 0 0 0 0 0 0 0 0' Flags='261'/><FaceName ID='4' Name='Arial' UnicodeRanges='31367 -2147483648 8 0' CharSets='1073742335 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='325'/><FaceName ID='5' Name='SimSun' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='6' Name='PMingLiU' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='7' Name='MS PGothic' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='8' Name='Dotum' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='9' Name='Sylfaen' UnicodeRanges='67110535 0 0 0' CharSets='536871071 0' Panos='1 10 5 2 5 3 6 3 3 3' Flags='325'/><FaceName ID='10' Name='Estrangelo Edessa' UnicodeRanges='-2147459008 0 128 0' CharSets='0 0' Panos='3 8 6 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='11' Name='Vrinda' UnicodeRanges='65539 0 0 0' CharSets='1 0' Panos='1 1 6 0 1 1 1 1 1 1' Flags='325'/><FaceName ID='12' Name='Shruti' UnicodeRanges='262144 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='13' Name='Mangal' UnicodeRanges='32768 0 0 0' CharSets='0 0' Panos='0 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='14' Name='Tunga' UnicodeRanges='4194304 0 0 0' CharSets='0 0' Panos='0 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='15' Name='Sendnya' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='16' Name='Raavi' UnicodeRanges='131072 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='17' Name='Dhenu' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='18' Name='Latha' UnicodeRanges='1048576 0 0 0' CharSets='0 0' Panos='2 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='19' Name='Gautami' UnicodeRanges='2097152 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='20' Name='Cordia New' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='21' Name='MS Farsi' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='22' Name='Gulim' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='23' Name='Times New Roman' UnicodeRanges='31367 -2147483648 8 0' CharSets='1073742335 -65536' Panos='2 2 6 3 5 4 5 2 3 4' Flags='325'/></FaceNames><StyleSheets><StyleSheet ID='0' NameU='No Style' Name='Žádný styl'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.01</LineWeight><LineColor>0</LineColor><LinePattern>1</LinePattern><Rounding>0</Rounding><EndArrowSize>2</EndArrowSize><BeginArrow>0</BeginArrow><EndArrow>0</EndArrow><LineCap>0</LineCap><BeginArrowSize>2</BeginArrowSize><LineColorTrans>0</LineColorTrans></Line><Fill><FillForegnd>1</FillForegnd><FillBkgnd>0</FillBkgnd><FillPattern>1</FillPattern><ShdwForegnd>0</ShdwForegnd><ShdwBkgnd>1</ShdwBkgnd><ShdwPattern>0</ShdwPattern><FillForegndTrans>0</FillForegndTrans><FillBkgndTrans>0</FillBkgndTrans><ShdwForegndTrans>0</ShdwForegndTrans><ShdwBkgndTrans>0</ShdwBkgndTrans><ShapeShdwType>0</ShapeShdwType><ShapeShdwOffsetX>0</ShapeShdwOffsetX><ShapeShdwOffsetY>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>1</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop>0.5</DefaultTabStop><TextDirection>0</TextDirection><TextBkgndTrans>0</TextBkgndTrans></TextBlock><Protection><LockWidth>0</LockWidth><LockHeight>0</LockHeight><LockMoveX>0</LockMoveX><LockMoveY>0</LockMoveY><LockAspect>0</LockAspect><LockDelete>0</LockDelete><LockBegin>0</LockBegin><LockEnd>0</LockEnd><LockRotate>0</LockRotate><LockCrop>0</LockCrop><LockVtxEdit>0</LockVtxEdit><LockTextEdit>0</LockTextEdit><LockFormat>0</LockFormat><LockGroup>0</LockGroup><LockCalcWH>0</LockCalcWH><LockSelect>0</LockSelect><LockCustProp>0</LockCustProp></Protection><Misc><NoObjHandles>0</NoObjHandles><NonPrinting>0</NonPrinting><NoCtlHandles>0</NoCtlHandles><NoAlignBox>0</NoAlignBox><UpdateAlignBox>0</UpdateAlignBox><HideText>0</HideText><DynFeedback>0</DynFeedback><GlueType>0</GlueType><WalkPreference>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType>0</ObjType><Comment V='null'/><IsDropSource>0</IsDropSource><NoLiveDynamics>0</NoLiveDynamics><LocalizeMerge>0</LocalizeMerge><Calendar>0</Calendar><LangID>1033</LangID><ShapeKeywords V='null'/><DropOnPageScale>1</DropOnPageScale></Misc><Event><TheData F='No Formula'>0</TheData><TheText F='No Formula'>0</TheText><EventDblClick F='No Formula'>0</EventDblClick><EventXFMod F='No Formula'>0</EventXFMod><EventDrop F='No Formula'>0</EventDrop></Event><Help><HelpTopic V='null'/><Copyright V='null'/></Help><LayerMem><LayerMember V='null'/></LayerMem><RulerGrid><XRulerDensity>32</XRulerDensity><YRulerDensity>32</YRulerDensity><XRulerOrigin>0</XRulerOrigin><YRulerOrigin>0</YRulerOrigin><XGridDensity>8</XGridDensity><YGridDensity>8</YGridDensity><XGridSpacing>0</XGridSpacing><YGridSpacing>0</YGridSpacing><XGridOrigin>0</XGridOrigin><YGridOrigin>0</YGridOrigin></RulerGrid><Image><Gamma>1</Gamma><Contrast>0.5</Contrast><Brightness>0.5</Brightness><Sharpen>0</Sharpen><Blur>0</Blur><Denoise>0</Denoise><Transparency>0</Transparency></Image><Group><SelectMode>1</SelectMode><DisplayMode>2</DisplayMode><IsDropTarget>0</IsDropTarget><IsSnapTarget>1</IsSnapTarget><IsTextEditTarget>1</IsTextEditTarget><DontMoveChildren>0</DontMoveChildren></Group><Layout><ShapePermeableX>0</ShapePermeableX><ShapePermeableY>0</ShapePermeableY><ShapePermeablePlace>0</ShapePermeablePlace><ShapeFixedCode>0</ShapeFixedCode><ShapePlowCode>0</ShapePlowCode><ShapeRouteStyle>0</ShapeRouteStyle><ConFixedCode>0</ConFixedCode><ConLineJumpCode>0</ConLineJumpCode><ConLineJumpStyle>0</ConLineJumpStyle><ConLineJumpDirX>0</ConLineJumpDirX><ConLineJumpDirY>0</ConLineJumpDirY><ShapePlaceFlip>0</ShapePlaceFlip><ConLineRouteExt>0</ConLineRouteExt><ShapeSplit>0</ShapeSplit><ShapeSplittable>0</ShapeSplittable></Layout><PageLayout><ResizePage>0</ResizePage><EnableGrid>0</EnableGrid><DynamicsOff>0</DynamicsOff><CtrlAsInput>0</CtrlAsInput><PlaceStyle>0</PlaceStyle><RouteStyle>0</RouteStyle><PlaceDepth>0</PlaceDepth><PlowCode>0</PlowCode><LineJumpCode>1</LineJumpCode><LineJumpStyle>0</LineJumpStyle><PageLineJumpDirX>0</PageLineJumpDirX><PageLineJumpDirY>0</PageLineJumpDirY><LineToNodeX>0.125</LineToNodeX><LineToNodeY>0.125</LineToNodeY><BlockSizeX>0.25</BlockSizeX><BlockSizeY>0.25</BlockSizeY><AvenueSizeX>0.375</AvenueSizeX><AvenueSizeY>0.375</AvenueSizeY><LineToLineX>0.125</LineToLineX><LineToLineY>0.125</LineToLineY><LineJumpFactorX>0.66666666666667</LineJumpFactorX><LineJumpFactorY>0.66666666666667</LineJumpFactorY><LineAdjustFrom>0</LineAdjustFrom><LineAdjustTo>0</LineAdjustTo><PlaceFlip>0</PlaceFlip><LineRouteExt>0</LineRouteExt><PageShapeSplit>0</PageShapeSplit></PageLayout><PrintProps><PageLeftMargin>0.25</PageLeftMargin><PageRightMargin>0.25</PageRightMargin><PageTopMargin>0.25</PageTopMargin><PageBottomMargin>0.25</PageBottomMargin><ScaleX>1</ScaleX><ScaleY>1</ScaleY><PagesX>1</PagesX><PagesY>1</PagesY><CenterX>0</CenterX><CenterY>0</CenterY><OnPage>0</OnPage><PrintGrid>0</PrintGrid><PrintPageOrientation>1</PrintPageOrientation><PaperKind>1</PaperKind><PaperSource>7</PaperSource></PrintProps><PageProps><PageWidth Unit='NUM' F='No Formula'>0</PageWidth><PageHeight Unit='NUM' F='No Formula'>0</PageHeight><ShdwOffsetX Unit='NUM' F='No Formula'>0</ShdwOffsetX><ShdwOffsetY Unit='NUM' F='No Formula'>0</ShdwOffsetY><PageScale F='No Formula'>0</PageScale><DrawingScale F='No Formula'>0</DrawingScale><DrawingSizeType F='No Formula'>0</DrawingSizeType><DrawingScaleType F='No Formula'>0</DrawingScaleType><InhibitSnap F='No Formula'>0</InhibitSnap><UIVisibility F='No Formula'>0</UIVisibility><ShdwType F='No Formula'>0</ShdwType><ShdwObliqueAngle Unit='NUM' F='No Formula'>0</ShdwObliqueAngle><ShdwScaleFactor F='No Formula'>0</ShdwScaleFactor></PageProps><Char IX='0'><Font>4</Font><Color>0</Color><Style>0</Style><Case>0</Case><Pos>0</Pos><FontScale>1</FontScale><Size>0.1666666666666667</Size><DblUnderline>0</DblUnderline><Overline>0</Overline><Strikethru>0</Strikethru><Highlight>0</Highlight><DoubleStrikethrough>0</DoubleStrikethrough><RTLText>0</RTLText><UseVertical>0</UseVertical><Letterspace>0</Letterspace><ColorTrans>0</ColorTrans><AsianFont>0</AsianFont><ComplexScriptFont>0</ComplexScriptFont><LocalizeFont>0</LocalizeFont><ComplexScriptSize>-1</ComplexScriptSize><LangID>1033</LangID></Char><Para IX='0'><IndFirst>0</IndFirst><IndLeft>0</IndLeft><IndRight>0</IndRight><SpLine>-1.2</SpLine><SpBefore>0</SpBefore><SpAfter>0</SpAfter><HorzAlign>1</HorzAlign><Bullet>0</Bullet><BulletStr V='null'/><BulletFont>0</BulletFont><LocalizeBulletFont>0</LocalizeBulletFont><BulletFontSize>-1</BulletFontSize><TextPosAfterBullet>0</TextPosAfterBullet><Flags>0</Flags></Para><Tabs IX='0'/></StyleSheet><StyleSheet ID='1' NameU='Text Only' Name='Pouze text' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern>0</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>0</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Para IX='0'><IndFirst F='Inh'>0</IndFirst><IndLeft F='Inh'>0</IndLeft><IndRight F='Inh'>0</IndRight><SpLine F='Inh'>-1.2</SpLine><SpBefore F='Inh'>0</SpBefore><SpAfter F='Inh'>0</SpAfter><HorzAlign>0</HorzAlign><Bullet F='Inh'>0</Bullet><BulletStr F='Inh'/><BulletFont F='Inh'>0</BulletFont><LocalizeBulletFont F='Inh'>0</LocalizeBulletFont><BulletFontSize F='Inh'>-1</BulletFontSize><TextPosAfterBullet F='Inh'>0</TextPosAfterBullet><Flags F='Inh'>0</Flags></Para></StyleSheet><StyleSheet ID='2' NameU='None' Name='Žádný' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern>0</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill></StyleSheet><StyleSheet ID='3' NameU='Normal' Name='Normální' LineStyle='0' FillStyle='0' TextStyle='0'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><TextBlock><LeftMargin Unit='PT'>0.05555555555555555</LeftMargin><RightMargin Unit='PT'>0.05555555555555555</RightMargin><TopMargin Unit='PT'>0.05555555555555555</TopMargin><BottomMargin Unit='PT'>0.05555555555555555</BottomMargin><VerticalAlign F='Inh'>1</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock></StyleSheet><StyleSheet ID='4' NameU='Guide' Name='Guide' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight Unit='PT'>0</LineWeight><LineColor>4</LineColor><LinePattern>23</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin Unit='PT' F='Inh'>0.05555555555555555</LeftMargin><RightMargin Unit='PT' F='Inh'>0.05555555555555555</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>2</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Misc><NoObjHandles F='Inh'>0</NoObjHandles><NonPrinting>1</NonPrinting><NoCtlHandles F='Inh'>0</NoCtlHandles><NoAlignBox F='Inh'>0</NoAlignBox><UpdateAlignBox F='Inh'>0</UpdateAlignBox><HideText F='Inh'>0</HideText><DynFeedback F='Inh'>0</DynFeedback><GlueType F='Inh'>0</GlueType><WalkPreference F='Inh'>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType F='Inh'>0</ObjType><Comment F='Inh'/><IsDropSource F='Inh'>0</IsDropSource><NoLiveDynamics F='Inh'>0</NoLiveDynamics><LocalizeMerge F='Inh'>0</LocalizeMerge><Calendar F='Inh'>0</Calendar><LangID F='Inh'>1033</LangID><ShapeKeywords F='Inh'/><DropOnPageScale F='Inh'>1</DropOnPageScale></Misc><Layout><ShapePermeableX>1</ShapePermeableX><ShapePermeableY>1</ShapePermeableY><ShapePermeablePlace>1</ShapePermeablePlace><ShapeFixedCode F='Inh'>0</ShapeFixedCode><ShapePlowCode F='Inh'>0</ShapePlowCode><ShapeRouteStyle F='Inh'>0</ShapeRouteStyle><ConFixedCode F='Inh'>0</ConFixedCode><ConLineJumpCode F='Inh'>0</ConLineJumpCode><ConLineJumpStyle F='Inh'>0</ConLineJumpStyle><ConLineJumpDirX F='Inh'>0</ConLineJumpDirX><ConLineJumpDirY F='Inh'>0</ConLineJumpDirY><ShapePlaceFlip F='Inh'>0</ShapePlaceFlip><ConLineRouteExt F='Inh'>0</ConLineRouteExt><ShapeSplit F='Inh'>0</ShapeSplit><ShapeSplittable F='Inh'>0</ShapeSplittable></Layout><Char IX='0'><Font F='Inh'>4</Font><Color>4</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size>0.125</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID F='Inh'>1033</LangID></Char></StyleSheet><StyleSheet ID='6' NameU='Connector' Name='Connector' LineStyle='7' FillStyle='7' TextStyle='7'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.003333333333333334</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize>1</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize>1</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>0</FillForegnd><FillBkgnd F='Inh'>1</FillBkgnd><FillPattern F='Inh'>1</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin Unit='PT' F='Inh'>0.05555555555555555</LeftMargin><RightMargin Unit='PT' F='Inh'>0.05555555555555555</RightMargin><TopMargin Unit='PT' F='Inh'>0.05555555555555555</TopMargin><BottomMargin Unit='PT' F='Inh'>0.05555555555555555</BottomMargin><VerticalAlign F='Inh'>1</VerticalAlign><TextBkgnd>2</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Char IX='0'><Font F='Inh'>4</Font><Color F='Inh'>0</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size Unit='PT'>0.1111111111111111</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID>1033</LangID></Char></StyleSheet><StyleSheet ID='7' NameU='Visio 90' Name='Visio 90' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>1</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor>0</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd>0</FillForegnd><FillBkgnd>1</FillBkgnd><FillPattern F='Inh'>1</FillPattern><ShdwForegnd>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><Char IX='0'><Font F='Inh'>4</Font><Color>0</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size F='Inh'>0.1666666666666667</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID>1033</LangID></Char></StyleSheet><StyleSheet ID='8' NameU='Callout' Name='Callout' LineStyle='9' FillStyle='9' TextStyle='9'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.003333333333333334</LineWeight><LineColor F='Inh'>#000000</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize>1</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize>1</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Char IX='0'><Font F='Inh'>4</Font><Color F='Inh'>0</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size Unit='PT'>0.1111111111111111</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID F='Inh'>1033</LangID></Char><Para IX='0'><IndFirst F='Inh'>0</IndFirst><IndLeft F='Inh'>0</IndLeft><IndRight F='Inh'>0</IndRight><SpLine F='Inh'>-1.2</SpLine><SpBefore F='Inh'>0</SpBefore><SpAfter F='Inh'>0</SpAfter><HorzAlign>0</HorzAlign><Bullet F='Inh'>0</Bullet><BulletStr F='Inh'/><BulletFont F='Inh'>0</BulletFont><LocalizeBulletFont F='Inh'>0</LocalizeBulletFont><BulletFontSize F='Inh'>-1</BulletFontSize><TextPosAfterBullet F='Inh'>0</TextPosAfterBullet><Flags F='Inh'>0</Flags></Para></StyleSheet><StyleSheet ID='9' NameU='Vi...
[truncated message content] |
|
From: <got...@us...> - 2010-01-07 20:54:59
|
Revision: 544
http://scstudio.svn.sourceforge.net/scstudio/?rev=544&view=rev
Author: gotthardp
Date: 2010-01-07 20:54:45 +0000 (Thu, 07 Jan 2010)
Log Message:
-----------
Fixed Windows 7 portability.
Modified Paths:
--------------
trunk/src/view/visio/addon/scstudio.vcproj
trunk/src/view/visio/scstudio.nsi
Modified: trunk/src/view/visio/addon/scstudio.vcproj
===================================================================
--- trunk/src/view/visio/addon/scstudio.vcproj 2010-01-07 19:32:50 UTC (rev 543)
+++ trunk/src/view/visio/addon/scstudio.vcproj 2010-01-07 20:54:45 UTC (rev 544)
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
- Version="9,00"
+ Version="9.00"
Name="scstudio"
ProjectGUID="{0E00282C-F48B-4984-A274-5B59E1E2AD49}"
RootNamespace="scstudio"
@@ -80,7 +80,6 @@
/>
<Tool
Name="VCLinkerTool"
- RegisterOutput="true"
IgnoreImportLibrary="true"
AdditionalDependencies="version.lib scmsc.lib"
OutputFile="$(OutDir)\$(ProjectName).vsl"
@@ -180,7 +179,6 @@
/>
<Tool
Name="VCLinkerTool"
- RegisterOutput="true"
IgnoreImportLibrary="true"
AdditionalDependencies="version.lib scmsc.lib"
OutputFile="$(OutDir)\$(ProjectName).vsl"
Modified: trunk/src/view/visio/scstudio.nsi
===================================================================
--- trunk/src/view/visio/scstudio.nsi 2010-01-07 19:32:50 UTC (rev 543)
+++ trunk/src/view/visio/scstudio.nsi 2010-01-07 20:54:45 UTC (rev 544)
@@ -35,7 +35,7 @@
!define Visio11RegPath "Software\Microsoft\Office\11.0\Visio"
!define Visio12RegPath "Software\Microsoft\Office\12.0\Visio"
-RequestExecutionLevel user
+RequestExecutionLevel admin
; -- Pages -----------------------------
@@ -104,7 +104,7 @@
ExecWait 'regsvr32.exe /s "$INSTDIR\capicom.dll"'
SetOutPath $TEMP
- !define CertificateName "gotthardp.cer"
+ !define CertificateName "scstudio.cer"
File "setup-nsis\Release\nsis.dll"
File ${CertificateName}
DetailPrint "Installing the publisher certificate"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <got...@us...> - 2010-01-10 15:48:11
|
Revision: 547
http://scstudio.svn.sourceforge.net/scstudio/?rev=547&view=rev
Author: gotthardp
Date: 2010-01-10 15:48:01 +0000 (Sun, 10 Jan 2010)
Log Message:
-----------
Sign installer.
Modified Paths:
--------------
trunk/src/view/visio/build-setup.bat
trunk/src/view/visio/scstudio.nsi
Modified: trunk/src/view/visio/build-setup.bat
===================================================================
--- trunk/src/view/visio/build-setup.bat 2010-01-10 14:47:31 UTC (rev 546)
+++ trunk/src/view/visio/build-setup.bat 2010-01-10 15:48:01 UTC (rev 547)
@@ -1 +1,3 @@
-"C:\Program Files\NSIS\makensis" scstudio.nsi
+set VERSION=0.3.29
+"C:\Program Files\NSIS\makensis" /DVERSION=%VERSION% scstudio.nsi
+"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\signtool.exe" sign /a scstudio-setup-%VERSION%.exe
Modified: trunk/src/view/visio/scstudio.nsi
===================================================================
--- trunk/src/view/visio/scstudio.nsi 2010-01-10 14:47:31 UTC (rev 546)
+++ trunk/src/view/visio/scstudio.nsi 2010-01-10 15:48:01 UTC (rev 547)
@@ -21,8 +21,6 @@
; -- General ---------------------------
-!define VERSION "0.3.28"
-
Name "Sequence Chart Studio"
OutFile "scstudio-setup-${VERSION}.exe"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <got...@us...> - 2010-02-02 23:00:09
|
Revision: 561
http://scstudio.svn.sourceforge.net/scstudio/?rev=561&view=rev
Author: gotthardp
Date: 2010-02-02 23:00:00 +0000 (Tue, 02 Feb 2010)
Log Message:
-----------
Enhancements to support custom clip art in MSC drawings. Installer fixes.
Modified Paths:
--------------
trunk/src/view/visio/addon/dllmodule.rc
trunk/src/view/visio/addon/extract.cpp
trunk/src/view/visio/addon/extract.h
trunk/src/view/visio/build-setup.bat
trunk/src/view/visio/scstudio.nsi
Modified: trunk/src/view/visio/addon/dllmodule.rc
===================================================================
--- trunk/src/view/visio/addon/dllmodule.rc 2010-02-02 15:56:26 UTC (rev 560)
+++ trunk/src/view/visio/addon/dllmodule.rc 2010-02-02 23:00:00 UTC (rev 561)
@@ -96,8 +96,8 @@
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0,3,31,0
- PRODUCTVERSION 0,3,31,0
+ FILEVERSION 0,3,32,0
+ PRODUCTVERSION 0,3,32,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x9L
@@ -114,13 +114,13 @@
BEGIN
VALUE "CompanyName", "Masaryk University Brno"
VALUE "FileDescription", "Microsoft Visio add-on for design and verification of Message Sequence Charts (MSC)."
- VALUE "FileVersion", "0.3.31"
+ VALUE "FileVersion", "0.3.32"
VALUE "InternalName", "scstudio.vsl"
VALUE "LegalCopyright", "(c) Petr Gotthard. All rights reserved."
VALUE "OriginalFilename", "scstudio.vsl"
VALUE "PrivateBuild", "$Revision$"
VALUE "ProductName", "Sequence Chart Studio"
- VALUE "ProductVersion", "0.3.31"
+ VALUE "ProductVersion", "0.3.32"
END
END
BLOCK "VarFileInfo"
Modified: trunk/src/view/visio/addon/extract.cpp
===================================================================
--- trunk/src/view/visio/addon/extract.cpp 2010-02-02 15:56:26 UTC (rev 560)
+++ trunk/src/view/visio/addon/extract.cpp 2010-02-02 23:00:00 UTC (rev 561)
@@ -58,6 +58,7 @@
case ST_BMSC_ACTION:
case ST_BMSC_CONDITION:
case ST_HMSC_CONDITION:
+ case ST_PICTURE:
case ST_MARKER_EVENT:
case ST_UNKNOWN:
// keep unknown and shapes not yet supported in msc.h
@@ -168,6 +169,7 @@
{_T("time.interval"), ST_TIME_INTERVAL},
{_T("time.directed"), ST_TIME_DIRECTED},
{_T("time.absolute"), ST_TIME_ABSOLUTE},
+ {_T("picture"), ST_PICTURE},
{_T("marker.event"), ST_MARKER_EVENT},
{NULL, ST_UNKNOWN}
};
@@ -631,6 +633,10 @@
shapelist() << shape);
break;
+ case ST_PICTURE:
+ // ignore clip art
+ break;
+
case ST_MARKER_EVENT:
PrintWarning(stringize() << page_name << ": "
<< "Event marker detected. This drawing has already been checked.",
@@ -1346,6 +1352,10 @@
break;
}
+ case ST_PICTURE:
+ // ignore clip art
+ break;
+
case ST_MARKER_EVENT:
PrintWarning(stringize() << page_name << ": "
<< "Event marker detected. This drawing has already been checked.",
Modified: trunk/src/view/visio/addon/extract.h
===================================================================
--- trunk/src/view/visio/addon/extract.h 2010-02-02 15:56:26 UTC (rev 560)
+++ trunk/src/view/visio/addon/extract.h 2010-02-02 23:00:00 UTC (rev 561)
@@ -44,6 +44,7 @@
ST_TIME_INTERVAL,
ST_TIME_DIRECTED,
ST_TIME_ABSOLUTE,
+ ST_PICTURE,
ST_MARKER_EVENT,
ST_UNKNOWN
};
Modified: trunk/src/view/visio/build-setup.bat
===================================================================
--- trunk/src/view/visio/build-setup.bat 2010-02-02 15:56:26 UTC (rev 560)
+++ trunk/src/view/visio/build-setup.bat 2010-02-02 23:00:00 UTC (rev 561)
@@ -1,3 +1,3 @@
-set VERSION=0.3.31
+set VERSION=0.3.32
"C:\Program Files\NSIS\makensis" /DVERSION=%VERSION% scstudio.nsi
"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\signtool.exe" sign /a scstudio-setup-%VERSION%.exe
Modified: trunk/src/view/visio/scstudio.nsi
===================================================================
--- trunk/src/view/visio/scstudio.nsi 2010-02-02 15:56:26 UTC (rev 560)
+++ trunk/src/view/visio/scstudio.nsi 2010-02-02 23:00:00 UTC (rev 561)
@@ -131,6 +131,7 @@
SetOutPath $INSTDIR\bin
File "addon\Release\scstudio.vsl"
+ File "addon\Release\scstudio.vsl.intermediate.manifest"
File "..\..\..\doc\help\scstudio.chm"
File "..\..\..\Release\*.dll"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <got...@us...> - 2010-02-22 22:48:05
|
Revision: 615
http://scstudio.svn.sourceforge.net/scstudio/?rev=615&view=rev
Author: gotthardp
Date: 2010-02-22 22:47:55 +0000 (Mon, 22 Feb 2010)
Log Message:
-----------
Enhanced Checker configuration to set ChannelMappers.
Implemented Simulator configuration. (Not used yet. To be further integrated.)
Modified Paths:
--------------
trunk/src/view/visio/addon/addon.cpp
trunk/src/view/visio/addon/addon.h
trunk/src/view/visio/addon/dllmodule.rc
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/optionsdlg.cpp
trunk/src/view/visio/addon/optionsdlg.h
trunk/src/view/visio/addon/resource.h
trunk/src/view/visio/addon/scstudio.vcproj
trunk/src/view/visio/scstudio.nsi
Added Paths:
-----------
trunk/src/view/visio/addon/simulatordlg.cpp
trunk/src/view/visio/addon/simulatordlg.h
Modified: trunk/src/view/visio/addon/addon.cpp
===================================================================
--- trunk/src/view/visio/addon/addon.cpp 2010-02-22 16:38:15 UTC (rev 614)
+++ trunk/src/view/visio/addon/addon.cpp 2010-02-22 22:47:55 UTC (rev 615)
@@ -20,6 +20,7 @@
#include "dllmodule.h"
#include "addon.h"
#include "aboutdlg.h"
+#include "SimulatorDlg.h"
#include "optionsdlg.h"
#include "document.h"
#include "extract.h"
@@ -284,12 +285,15 @@
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_OPTIONS:
+ case CDocumentMonitor::MENU_CHECK_OPTIONS:
TRACE("CStudioAddon::Run() menu item 'Check--Options'");
- return DisplayOptions();
+ return DisplayCheckOptions();
case CDocumentMonitor::MENU_SELECT_ALL_INSTANCES:
TRACE("CStudioAddon::Run() menu item 'Check--Drawing--Select--All Instances'");
return pDocumentMonitor->OnMenuSelectAllInstances(vsoApp);
@@ -342,9 +346,18 @@
return VAddon::Unload(wParam, p);
}
-VAORC CStudioAddon::DisplayOptions()
+VAORC CStudioAddon::DisplaySimulatorOptions()
{
- TRACE("CStudioAddon::DisplayOptions() called");
+ TRACE("CStudioAddon::DisplaySimulatorOptions() called");
+ CSimulatorDlg dlg;
+
+ dlg.DoModal();
+ return VAORC_SUCCESS;
+}
+
+VAORC CStudioAddon::DisplayCheckOptions()
+{
+ TRACE("CStudioAddon::DisplayCheckOptions() called");
COptionsDlg dlg;
dlg.DoModal();
Modified: trunk/src/view/visio/addon/addon.h
===================================================================
--- trunk/src/view/visio/addon/addon.h 2010-02-22 16:38:15 UTC (rev 614)
+++ trunk/src/view/visio/addon/addon.h 2010-02-22 22:47:55 UTC (rev 615)
@@ -34,7 +34,8 @@
virtual VAORC Run(LPVAOV2LSTRUCT pV2L);
virtual VAORC Unload(WORD wParam, LPVOID p);
- VAORC DisplayOptions();
+ VAORC DisplaySimulatorOptions();
+ VAORC DisplayCheckOptions();
virtual HRESULT HandleVisioEvent(
IUnknown *ipSink, // [in] ipSink [assert]
Modified: trunk/src/view/visio/addon/dllmodule.rc
===================================================================
--- trunk/src/view/visio/addon/dllmodule.rc 2010-02-22 16:38:15 UTC (rev 614)
+++ trunk/src/view/visio/addon/dllmodule.rc 2010-02-22 22:47:55 UTC (rev 615)
@@ -37,26 +37,46 @@
DEFPUSHBUTTON "&OK",IDOK,184,60,50,14
END
-IDD_OPTIONS DIALOGEX 0, 0, 200, 135
+IDD_CHECK_OPTIONS DIALOGEX 0, 0, 200, 159
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Options"
+CAPTION "Verification Options"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "OK",IDOK,145,14,50,14
PUSHBUTTON "Cancel",IDCANCEL,145,33,50,14
LTEXT "Properties to check",IDC_STATIC,5,5,130,8
CONTROL "",IDC_CHECKLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,5,14,130,90
- LTEXT "Display",IDC_STATIC,5,108,130,8
- COMBOBOX IDC_OUTPUTLEVEL,5,118,130,61,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Use channel for each",IDC_STATIC,5,107,130,8
+ COMBOBOX IDC_CHANNELTYPE,5,116,130,61,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Display",IDC_STATIC,5,133,130,8
+ COMBOBOX IDC_OUTPUTLEVEL,5,142,130,61,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
END
+IDD_SIMULATOR_OPTIONS DIALOGEX 0, 0, 191, 79
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Simulator Options"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+ LTEXT "Repetitions",IDC_STATIC,5,16,37,8
+ EDITTEXT IDC_SIM_REPETITIONS,5,25,40,14,ES_AUTOHSCROLL | ES_NUMBER
+ GROUPBOX "Upper limits",IDC_STATIC,52,5,75,69
+ LTEXT "Message delay",IDC_STATIC,61,16,48,8
+ EDITTEXT IDC_SIM_MESSAGE_DELAY,60,25,40,14,ES_AUTOHSCROLL | ES_NUMBER
+ LTEXT "[sec]",IDC_STATIC,102,27,17,8
+ LTEXT "Event step",IDC_STATIC,61,43,36,8
+ EDITTEXT IDC_SIM_EVENT_STEP,60,52,40,14,ES_AUTOHSCROLL | ES_NUMBER
+ LTEXT "[sec]",IDC_STATIC,102,54,17,8
+ DEFPUSHBUTTON "OK",IDOK,136,9,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,136,28,50,14
+END
+
IDD_FIND_FLOW DIALOGEX 0, 0, 275, 111
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Find"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
- DEFPUSHBUTTON "Start",IDOK,220,72,50,14
- PUSHBUTTON "Cancel",IDCANCEL,220,92,50,14
+ DEFPUSHBUTTON "Start",IDOK,220,14,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,220,34,50,14
LTEXT "Find flow",IDC_STATIC,5,5,100,8
CONTROL "",IDC_DRAWING1,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_SHOWSELALWAYS | WS_BORDER | WS_HSCROLL | WS_TABSTOP,5,14,100,92
LTEXT "In drawing",IDC_STATIC,110,5,100,8
@@ -145,14 +165,22 @@
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
- IDD_OPTIONS, DIALOG
+ IDD_CHECK_OPTIONS, DIALOG
BEGIN
LEFTMARGIN, 5
RIGHTMARGIN, 195
TOPMARGIN, 5
- BOTTOMMARGIN, 130
+ BOTTOMMARGIN, 154
END
+ IDD_SIMULATOR_OPTIONS, DIALOG
+ BEGIN
+ LEFTMARGIN, 5
+ RIGHTMARGIN, 186
+ TOPMARGIN, 5
+ BOTTOMMARGIN, 74
+ END
+
IDD_FIND_FLOW, DIALOG
BEGIN
LEFTMARGIN, 5
@@ -169,8 +197,10 @@
// Dialog Info
//
-IDD_OPTIONS DLGINIT
+IDD_CHECK_OPTIONS DLGINIT
BEGIN
+ IDC_CHANNELTYPE, 0x403, 3, 0
+0x6464, "\000"
IDC_OUTPUTLEVEL, 0x403, 3, 0
0x6464, "\000"
0
Modified: trunk/src/view/visio/addon/document.cpp
===================================================================
--- trunk/src/view/visio/addon/document.cpp 2010-02-22 16:38:15 UTC (rev 614)
+++ trunk/src/view/visio/addon/document.cpp 2010-02-22 22:47:55 UTC (rev 615)
@@ -24,7 +24,6 @@
#include "extract.h"
#include "visualize.h"
#include "finddlg.h"
-#include "optionsdlg.h"
#include <fstream>
#include "data/msc.h"
@@ -440,6 +439,11 @@
vslIconFile = vslFileName+_T(",5");
m_simulationStopMenuItem->IconFileName(vslIconFile.c_str());
+ Visio::IVMenuItemPtr itemSimulationOptions = menu->MenuItems->Add();
+ itemSimulationOptions->Caption = "Simulator O&ptions...";
+ itemSimulationOptions->AddOnName = ADDON_NAME;
+ itemSimulationOptions->AddOnArgs = stringize() << L"/event=" << MENU_SIMULATOR_OPTIONS;
+
Visio::IVMenuItemPtr itemVerify = menu->MenuItems->Add();
itemVerify->Caption = "&Verify";
itemVerify->AddOnName = ADDON_NAME;
@@ -448,10 +452,10 @@
vslIconFile = vslFileName+_T(",0");
itemVerify->IconFileName(vslIconFile.c_str());
- Visio::IVMenuItemPtr itemOptions = menu->MenuItems->Add();
- itemOptions->Caption = "&Options...";
- itemOptions->AddOnName = ADDON_NAME;
- itemOptions->AddOnArgs = stringize() << L"/event=" << MENU_OPTIONS;
+ Visio::IVMenuItemPtr itemCheckOptions = menu->MenuItems->Add();
+ itemCheckOptions->Caption = "&Options...";
+ itemCheckOptions->AddOnName = ADDON_NAME;
+ itemCheckOptions->AddOnArgs = stringize() << L"/event=" << MENU_CHECK_OPTIONS;
// step 2: create accelerators
// note: the accelerators must be created in this custom menu set
Modified: trunk/src/view/visio/addon/document.h
===================================================================
--- trunk/src/view/visio/addon/document.h 2010-02-22 16:38:15 UTC (rev 614)
+++ trunk/src/view/visio/addon/document.h 2010-02-22 22:47:55 UTC (rev 615)
@@ -55,8 +55,9 @@
MENU_FIND_FLOW,
MENU_SIMULATION_START,
MENU_SIMULATION_STOP,
+ MENU_SIMULATOR_OPTIONS,
MENU_VERIFY,
- MENU_OPTIONS,
+ MENU_CHECK_OPTIONS,
MENU_SELECT_ALL_INSTANCES,
MENU_SELECT_ALL_MESSAGES,
MENU_SELECT_ADD_ALL_INSTANCES,
Modified: trunk/src/view/visio/addon/document_check.cpp
===================================================================
--- trunk/src/view/visio/addon/document_check.cpp 2010-02-22 16:38:15 UTC (rev 614)
+++ trunk/src/view/visio/addon/document_check.cpp 2010-02-22 22:47:55 UTC (rev 615)
@@ -231,6 +231,18 @@
return VAORC_FAILURE;
}
+ DWORD channel_type = GetRegistryDWORD(SCSTUDIO_REGISTRY_ROOT, NULL, _T("ChannelType"), DEFAULT_CHANNEL);
+ switch(channel_type)
+ {
+ case 0:
+ default:
+ m_reportView->Print(RS_REPORT, _T("Use channel for each Sender-Receiver pair."));
+ break;
+ case 1:
+ m_reportView->Print(RS_REPORT, _T("Use channel for each Sender-Receiver-Message pair."));
+ break;
+ }
+
enum OutputLevel
{
OL_ERROR,
@@ -283,7 +295,17 @@
}
}
- SRChannelMapperPtr srm(new SRChannelMapper());
+ ChannelMapperPtr channel_mapper;
+ switch(channel_type)
+ {
+ case 0:
+ default:
+ channel_mapper = SRChannelMapperPtr(new SRChannelMapper());
+ break;
+ case 1:
+ channel_mapper = SRMChannelMapperPtr(new SRMChannelMapper());
+ break;
+ }
std::list<MscPtr> result;
bool result_set = false;
@@ -305,7 +327,7 @@
try
{
- std::list<BMscPtr> bresult = bmsc_checker->check(bmsc, srm);
+ std::list<BMscPtr> bresult = bmsc_checker->check(bmsc, channel_mapper);
for(std::list<BMscPtr>::const_iterator bpos = bresult.begin();
bpos != bresult.end(); bpos++)
@@ -339,7 +361,7 @@
try
{
- std::list<HMscPtr> hresult = hmsc_checker->check(hmsc, srm);
+ std::list<HMscPtr> hresult = hmsc_checker->check(hmsc, channel_mapper);
for(std::list<HMscPtr>::const_iterator hpos = hresult.begin();
hpos != hresult.end(); hpos++)
Modified: trunk/src/view/visio/addon/optionsdlg.cpp
===================================================================
--- trunk/src/view/visio/addon/optionsdlg.cpp 2010-02-22 16:38:15 UTC (rev 614)
+++ trunk/src/view/visio/addon/optionsdlg.cpp 2010-02-22 22:47:55 UTC (rev 615)
@@ -24,7 +24,14 @@
int COptionsDlg::LoadRegistryData()
{
- // (1) load the output level
+ // (1) configuration options
+ // load the channel mapper
+ m_channel_type.InsertString(0, _T("Sender-Receiver pair"));
+ m_channel_type.InsertString(1, _T("Sender-Receiver-Message pair"));
+ DWORD channel_type = GetRegistryDWORD(SCSTUDIO_REGISTRY_ROOT, NULL, _T("ChannelType"), DEFAULT_CHANNEL);
+ m_channel_type.SetCurSel(channel_type);
+
+ // load the output level
m_ouputtype.InsertString(0, _T("Errors only"));
m_ouputtype.InsertString(1, _T("Errors and warnings"));
m_ouputtype.InsertString(2, _T("All results"));
@@ -97,7 +104,9 @@
int COptionsDlg::SaveRegistryData()
{
- // (1) store the output level
+ // (1) store the configuration options
+ DWORD channel_type = m_channel_type.GetCurSel();
+ SetRegistryDWORD(HKEY_CURRENT_USER, SCSTUDIO_REGISTRY_ROOT, _T("ChannelType"), channel_type);
DWORD output_level = m_ouputtype.GetCurSel();
SetRegistryDWORD(HKEY_CURRENT_USER, SCSTUDIO_REGISTRY_ROOT, _T("OutputLevel"), output_level);
Modified: trunk/src/view/visio/addon/optionsdlg.h
===================================================================
--- trunk/src/view/visio/addon/optionsdlg.h 2010-02-22 16:38:15 UTC (rev 614)
+++ trunk/src/view/visio/addon/optionsdlg.h 2010-02-22 22:47:55 UTC (rev 615)
@@ -28,14 +28,16 @@
: public ATL::CDialogImpl<COptionsDlg>, public CWinDataExchange<COptionsDlg>
{
public:
- enum { IDD = IDD_OPTIONS };
+ enum { IDD = IDD_CHECK_OPTIONS };
CListViewCtrl m_checklist;
- CComboBox m_ouputtype;
+ CComboBox m_channel_type;
+ CComboBox m_ouputtype;
protected:
BEGIN_DDX_MAP(COptionsDlg)
- DDX_CONTROL_HANDLE(IDC_CHECKLIST, m_checklist)
- DDX_CONTROL_HANDLE(IDC_OUTPUTLEVEL, m_ouputtype)
+ DDX_CONTROL_HANDLE(IDC_CHECKLIST, m_checklist)
+ DDX_CONTROL_HANDLE(IDC_CHANNELTYPE, m_channel_type)
+ DDX_CONTROL_HANDLE(IDC_OUTPUTLEVEL, m_ouputtype)
END_DDX_MAP()
BEGIN_MSG_MAP(COptionsDlg)
@@ -73,6 +75,7 @@
};
static const DWORD DEFAULT_CHECKER_PRIORITY = 0;
+static const DWORD DEFAULT_CHANNEL = 0;
static const DWORD DEFAULT_OUTPUT_LEVEL = 2;
// $Id$
Modified: trunk/src/view/visio/addon/resource.h
===================================================================
--- trunk/src/view/visio/addon/resource.h 2010-02-22 16:38:15 UTC (rev 614)
+++ trunk/src/view/visio/addon/resource.h 2010-02-22 22:47:55 UTC (rev 615)
@@ -8,14 +8,14 @@
#define IDS_VSL_NAME 102
#define IDS_REPORT_VIEW 103
#define IDD_ABOUTBOX 203
-#define IDD_OPTIONS 204
+#define IDD_FIND_FLOW 204
+#define IDD_CHECK_OPTIONS 205
#define IDC_ABOUT_VERSION 205
#define IDC_CHECKLIST 206
-#define IDD_SEARCH 206
-#define IDD_SEARCH_FLOW 206
-#define IDD_FIND_FLOW 206
+#define IDD_SIMULATOR_OPTIONS 206
#define IDC_OUTPUTLEVEL 207
#define IDC_DRAWING1 208
+#define IDC_CHANNELTYPE 208
#define IDC_DRAWING2 209
#define IDI_ICON_CHECK 209
#define IDI_ICON_FIND_FLOW 210
@@ -23,16 +23,19 @@
#define IDI_ICON_SELECT_MESSAGES 212
#define IDI_ICON_SIMULATION_START 213
#define IDI_ICON_SIMULATION_STOP 214
-#define IDI_ICON_SELECT_ADD_INSTANCES 216
-#define IDI_ICON_SELECT_ADD_MESSAGES 217
+#define IDI_ICON_SELECT_ADD_INSTANCES 215
+#define IDI_ICON_SELECT_ADD_MESSAGES 216
+#define IDC_SIM_MESSAGE_DELAY 218
+#define IDC_SIM_EVENT_STEP 219
+#define IDC_SIM_REPETITIONS 220
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 216
+#define _APS_NEXT_RESOURCE_VALUE 217
#define _APS_NEXT_COMMAND_VALUE 32768
-#define _APS_NEXT_CONTROL_VALUE 209
+#define _APS_NEXT_CONTROL_VALUE 221
#define _APS_NEXT_SYMED_VALUE 105
#endif
#endif
Modified: trunk/src/view/visio/addon/scstudio.vcproj
===================================================================
--- trunk/src/view/visio/addon/scstudio.vcproj 2010-02-22 16:38:15 UTC (rev 614)
+++ trunk/src/view/visio/addon/scstudio.vcproj 2010-02-22 22:47:55 UTC (rev 615)
@@ -344,6 +344,14 @@
>
</File>
<File
+ RelativePath=".\simulatordlg.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\simulatordlg.h"
+ >
+ </File>
+ <File
RelativePath=".\stdafx.cpp"
>
<FileConfiguration
Added: trunk/src/view/visio/addon/simulatordlg.cpp
===================================================================
--- trunk/src/view/visio/addon/simulatordlg.cpp (rev 0)
+++ trunk/src/view/visio/addon/simulatordlg.cpp 2010-02-22 22:47:55 UTC (rev 615)
@@ -0,0 +1,69 @@
+/*
+ * scstudio - Sequence Chart Studio
+ * http://scstudio.sourceforge.net
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * Copyright (c) 2007-2010 Petr Gotthard <pet...@ce...>
+ *
+ * $Id$
+ */
+
+#include "stdafx.h"
+#include "dllmodule.h"
+#include "simulatordlg.h"
+
+LRESULT CSimulatorDlg::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+{
+ CenterWindow(GetParent());
+
+ LoadRegistryData();
+ DoDataExchange();
+
+ return bHandled = FALSE;
+}
+
+LRESULT CSimulatorDlg::OnCloseCmd(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
+{
+ if(wID == IDOK)
+ {
+ DoDataExchange(TRUE);
+ SaveRegistryData();
+ }
+
+ EndDialog(wID);
+ return 0;
+}
+
+int CSimulatorDlg::LoadRegistryData()
+{
+ m_repetitions = GetRegistryDWORD(SCSTUDIO_REGISTRY_ROOT _T("\\Simulator"), NULL,
+ _T("Repetitions"), DEFAULT_SIM_REPETITIONS);
+ m_max_message_delay = GetRegistryDWORD(SCSTUDIO_REGISTRY_ROOT _T("\\Simulator"), NULL,
+ _T("MaxMessageDelay"), DEFAULT_SIM_MESSAGE_DELAY);
+ m_max_event_step = GetRegistryDWORD(SCSTUDIO_REGISTRY_ROOT _T("\\Simulator"), NULL,
+ _T("MaxEventStep"), DEFAULT_SIM_EVENT_STEP);
+
+ return 0;
+}
+
+int CSimulatorDlg::SaveRegistryData()
+{
+ SetRegistryDWORD(HKEY_CURRENT_USER, SCSTUDIO_REGISTRY_ROOT _T("\\Simulator"),
+ _T("Repetitions"), m_repetitions);
+ SetRegistryDWORD(HKEY_CURRENT_USER, SCSTUDIO_REGISTRY_ROOT _T("\\Simulator"),
+ _T("MaxMessageDelay"), m_max_message_delay);
+ SetRegistryDWORD(HKEY_CURRENT_USER, SCSTUDIO_REGISTRY_ROOT _T("\\Simulator"),
+ _T("MaxEventStep"), m_max_event_step);
+
+ return 0;
+}
+
+// $Id$
Property changes on: trunk/src/view/visio/addon/simulatordlg.cpp
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Added: trunk/src/view/visio/addon/simulatordlg.h
===================================================================
--- trunk/src/view/visio/addon/simulatordlg.h (rev 0)
+++ trunk/src/view/visio/addon/simulatordlg.h 2010-02-22 22:47:55 UTC (rev 615)
@@ -0,0 +1,65 @@
+/*
+ * scstudio - Sequence Chart Studio
+ * http://scstudio.sourceforge.net
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * Copyright (c) 2007-2010 Petr Gotthard <pet...@ce...>
+ *
+ * $Id$
+ */
+
+#pragma once
+
+// Include libraries from the Windows Template Library (WTL).
+// http://wtl.sourceforge.net
+#include <atldlgs.h>
+#include <atlctrls.h>
+#include <atlddx.h>
+
+class CSimulatorDlg
+ : public ATL::CDialogImpl<CSimulatorDlg>, public CWinDataExchange<CSimulatorDlg>
+{
+public:
+ enum { IDD = IDD_SIMULATOR_OPTIONS };
+ int m_repetitions;
+ int m_max_message_delay;
+ int m_max_event_step;
+
+protected:
+BEGIN_DDX_MAP(CSimulatorDlg)
+ DDX_INT(IDC_SIM_REPETITIONS, m_repetitions)
+ DDX_INT(IDC_SIM_MESSAGE_DELAY, m_max_message_delay)
+ DDX_INT(IDC_SIM_EVENT_STEP, m_max_event_step)
+END_DDX_MAP()
+
+BEGIN_MSG_MAP(CSimulatorDlg)
+ MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
+ COMMAND_ID_HANDLER(IDOK, OnCloseCmd)
+ COMMAND_ID_HANDLER(IDCANCEL, OnCloseCmd)
+END_MSG_MAP()
+
+// Handler prototypes:
+// LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+// LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
+// LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled)
+
+ LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnCloseCmd(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
+
+ int LoadRegistryData();
+ int SaveRegistryData();
+};
+
+static const DWORD DEFAULT_SIM_REPETITIONS = 1;
+static const DWORD DEFAULT_SIM_MESSAGE_DELAY = 10; // [sec]
+static const DWORD DEFAULT_SIM_EVENT_STEP = 0; // [sec]
+
+// $Id$
Property changes on: trunk/src/view/visio/addon/simulatordlg.h
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Modified: trunk/src/view/visio/scstudio.nsi
===================================================================
--- trunk/src/view/visio/scstudio.nsi 2010-02-22 16:38:15 UTC (rev 614)
+++ trunk/src/view/visio/scstudio.nsi 2010-02-22 22:47:55 UTC (rev 615)
@@ -30,6 +30,7 @@
!define RegMainPath "Software\Sequence Chart Studio"
!define RegModulesPath "Software\Sequence Chart Studio\Modules"
+!define RegSimulatorPath "Software\Sequence Chart Studio\Simulator"
!define RegStencilsPath "Software\Sequence Chart Studio\Stencils"
!define RegChecksPath "Software\Sequence Chart Studio\Checks"
@@ -160,6 +161,7 @@
DeleteRegKey HKCU "${RegMainPath}"
; register modules
WriteRegStr HKCU '${RegMainPath}' 'ModulesPath' '$INSTDIR\bin'
+ WriteRegDWORD HKCU '${RegMainPath}' 'ChannelType' '0'
WriteRegDWORD HKCU '${RegMainPath}' 'OutputLevel' '2'
WriteRegStr HKCU '${RegModulesPath}' 'sc_boundedness' 'scboundedness.dll'
WriteRegStr HKCU '${RegModulesPath}' 'sc_liveness' 'scliveness.dll'
@@ -195,6 +197,10 @@
WriteRegDWORD HKCU '${RegChecksPath}\Beautify' 'InstanceHeadDistance' '5'
WriteRegDWORD HKCU '${RegChecksPath}\Beautify' 'SuccessorDistance' '5'
WriteRegDWORD HKCU '${RegChecksPath}\Beautify' 'SendReceiveDistance' '0'
+ ; configure simulator
+ WriteRegDWORD HKCU '${RegSimulatorPath}' 'Repetitions' '0'
+ WriteRegDWORD HKCU '${RegSimulatorPath}' 'MaxMessageDelay' '10'
+ WriteRegDWORD HKCU '${RegSimulatorPath}' 'MaxEventStep' '1'
; Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <got...@us...> - 2010-02-25 17:47:41
|
Revision: 623
http://scstudio.svn.sourceforge.net/scstudio/?rev=623&view=rev
Author: gotthardp
Date: 2010-02-25 17:47:26 +0000 (Thu, 25 Feb 2010)
Log Message:
-----------
Fixed wrong message text alignment.
Modified Paths:
--------------
trunk/src/view/visio/addon/visualize.cpp
trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx
Modified: trunk/src/view/visio/addon/visualize.cpp
===================================================================
--- trunk/src/view/visio/addon/visualize.cpp 2010-02-24 06:14:02 UTC (rev 622)
+++ trunk/src/view/visio/addon/visualize.cpp 2010-02-25 17:47:26 UTC (rev 623)
@@ -571,17 +571,6 @@
}
}
}
-
- // walk through generated messages
- for(MessagePtrMap::const_iterator mpos = messages.begin();
- mpos != messages.end(); mpos++)
- {
- Visio::IVShapePtr msg = mpos->second;
-
- // correct text alignment for left-headed messages
- if(fabs(msg->CellsSRC[visSectionObject][visRowXFormOut][visXFormAngle]->Result[visDegrees]) > 90)
- msg->CellsSRC[visSectionParagraph][visRowParagraph][visHorzAlign]->ResultIU = visHorzRight;
- }
}
Visio::IVShapePtr CDrawingVisualizer::drop_hmsc_node(Visio::IVPagePtr vsoPage, NodePtrMap& nodes, HMscNodePtr node)
Modified: trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx
===================================================================
--- trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx 2010-02-24 06:14:02 UTC (rev 622)
+++ trunk/src/view/visio/stencils/Sequence Chart Studio/Basic MSC.vsx 2010-02-25 17:47:26 UTC (rev 623)
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8' ?>
-<VisioDocument key='9CB67D1A80C9B4FF887DAD19F9DF80BC591E91B9905EA18777392D0535F354A56C6B2C2C8AB0C9FD466295307FA91B90F07972D63662D14F0873DA665B3756E0' start='190' xmlns='http://schemas.microsoft.com/visio/2003/core' metric='0' DocLangID='1033' buildnum='8161' version='11.0' xml:space='preserve'><DocumentProperties><Title>Basic MSC</Title><Creator>Petr Gotthard</Creator><Company>Brno</Company><BuildNumberCreated>738205665</BuildNumberCreated><BuildNumberEdited>738205665</BuildNumberEdited><TimeCreated>2008-12-14T11:32:13</TimeCreated><TimeSaved>2010-02-07T12:58:00</TimeSaved><TimeEdited>2010-02-07T12:57:49</TimeEdited><TimePrinted>2008-12-14T11:32:13</TimePrinted></DocumentProperties><DocumentSettings TopPage='0' DefaultTextStyle='3' DefaultLineStyle='3' DefaultFillStyle='3' DefaultGuideStyle='4'><GlueSettings>9</GlueSettings><SnapSettings>65847</SnapSettings><SnapExtensions>34</SnapExtensions><DynamicGridEnabled>0</DynamicGridEnabled><ProtectStyles>0</ProtectStyles><ProtectShapes>0</ProtectShapes><ProtectMasters>0</ProtectMasters><ProtectBkgnds>0</ProtectBkgnds></DocumentSettings><Colors><ColorEntry IX='0' RGB='#000000'/><ColorEntry IX='1' RGB='#FFFFFF'/><ColorEntry IX='2' RGB='#FF0000'/><ColorEntry IX='3' RGB='#00FF00'/><ColorEntry IX='4' RGB='#0000FF'/><ColorEntry IX='5' RGB='#FFFF00'/><ColorEntry IX='6' RGB='#FF00FF'/><ColorEntry IX='7' RGB='#00FFFF'/><ColorEntry IX='8' RGB='#800000'/><ColorEntry IX='9' RGB='#008000'/><ColorEntry IX='10' RGB='#000080'/><ColorEntry IX='11' RGB='#808000'/><ColorEntry IX='12' RGB='#800080'/><ColorEntry IX='13' RGB='#008080'/><ColorEntry IX='14' RGB='#C0C0C0'/><ColorEntry IX='15' RGB='#E6E6E6'/><ColorEntry IX='16' RGB='#CDCDCD'/><ColorEntry IX='17' RGB='#B3B3B3'/><ColorEntry IX='18' RGB='#9A9A9A'/><ColorEntry IX='19' RGB='#808080'/><ColorEntry IX='20' RGB='#666666'/><ColorEntry IX='21' RGB='#4D4D4D'/><ColorEntry IX='22' RGB='#333333'/><ColorEntry IX='23' RGB='#1A1A1A'/></Colors><FaceNames><FaceName ID='1' Name='Arial Unicode MS' UnicodeRanges='-1 -369098753 63 0' CharSets='1614742015 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='357'/><FaceName ID='2' Name='Symbol' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 5 1 2 1 7 6 2 5 7' Flags='261'/><FaceName ID='3' Name='Wingdings' UnicodeRanges='0 0 0 0' CharSets='-2147483648 0' Panos='5 0 0 0 0 0 0 0 0 0' Flags='261'/><FaceName ID='4' Name='Arial' UnicodeRanges='31367 -2147483648 8 0' CharSets='1073742335 -65536' Panos='2 11 6 4 2 2 2 2 2 4' Flags='325'/><FaceName ID='5' Name='SimSun' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='6' Name='PMingLiU' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='7' Name='MS PGothic' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='8' Name='Dotum' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='9' Name='Sylfaen' UnicodeRanges='67110535 0 0 0' CharSets='536871071 0' Panos='1 10 5 2 5 3 6 3 3 3' Flags='325'/><FaceName ID='10' Name='Estrangelo Edessa' UnicodeRanges='-2147459008 0 128 0' CharSets='0 0' Panos='3 8 6 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='11' Name='Vrinda' UnicodeRanges='65539 0 0 0' CharSets='1 0' Panos='1 1 6 0 1 1 1 1 1 1' Flags='325'/><FaceName ID='12' Name='Shruti' UnicodeRanges='262144 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='13' Name='Mangal' UnicodeRanges='32768 0 0 0' CharSets='0 0' Panos='0 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='14' Name='Tunga' UnicodeRanges='4194304 0 0 0' CharSets='0 0' Panos='0 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='15' Name='Sendnya' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='16' Name='Raavi' UnicodeRanges='131072 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='17' Name='Dhenu' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='18' Name='Latha' UnicodeRanges='1048576 0 0 0' CharSets='0 0' Panos='2 0 4 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='19' Name='Gautami' UnicodeRanges='2097152 0 0 0' CharSets='0 0' Panos='2 0 5 0 0 0 0 0 0 0' Flags='325'/><FaceName ID='20' Name='Cordia New' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='21' Name='MS Farsi' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='22' Name='Gulim' UnicodeRanges='1627421663 -2147483648 8 0' CharSets='536936959 539492352' Panos='2 11 6 4 2 2 2 2 2 4' Flags='327'/><FaceName ID='23' Name='Times New Roman' UnicodeRanges='31367 -2147483648 8 0' CharSets='1073742335 -65536' Panos='2 2 6 3 5 4 5 2 3 4' Flags='325'/></FaceNames><StyleSheets><StyleSheet ID='0' NameU='No Style' Name='Žádný styl'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.01</LineWeight><LineColor>0</LineColor><LinePattern>1</LinePattern><Rounding>0</Rounding><EndArrowSize>2</EndArrowSize><BeginArrow>0</BeginArrow><EndArrow>0</EndArrow><LineCap>0</LineCap><BeginArrowSize>2</BeginArrowSize><LineColorTrans>0</LineColorTrans></Line><Fill><FillForegnd>1</FillForegnd><FillBkgnd>0</FillBkgnd><FillPattern>1</FillPattern><ShdwForegnd>0</ShdwForegnd><ShdwBkgnd>1</ShdwBkgnd><ShdwPattern>0</ShdwPattern><FillForegndTrans>0</FillForegndTrans><FillBkgndTrans>0</FillBkgndTrans><ShdwForegndTrans>0</ShdwForegndTrans><ShdwBkgndTrans>0</ShdwBkgndTrans><ShapeShdwType>0</ShapeShdwType><ShapeShdwOffsetX>0</ShapeShdwOffsetX><ShapeShdwOffsetY>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>1</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop>0.5</DefaultTabStop><TextDirection>0</TextDirection><TextBkgndTrans>0</TextBkgndTrans></TextBlock><Protection><LockWidth>0</LockWidth><LockHeight>0</LockHeight><LockMoveX>0</LockMoveX><LockMoveY>0</LockMoveY><LockAspect>0</LockAspect><LockDelete>0</LockDelete><LockBegin>0</LockBegin><LockEnd>0</LockEnd><LockRotate>0</LockRotate><LockCrop>0</LockCrop><LockVtxEdit>0</LockVtxEdit><LockTextEdit>0</LockTextEdit><LockFormat>0</LockFormat><LockGroup>0</LockGroup><LockCalcWH>0</LockCalcWH><LockSelect>0</LockSelect><LockCustProp>0</LockCustProp></Protection><Misc><NoObjHandles>0</NoObjHandles><NonPrinting>0</NonPrinting><NoCtlHandles>0</NoCtlHandles><NoAlignBox>0</NoAlignBox><UpdateAlignBox>0</UpdateAlignBox><HideText>0</HideText><DynFeedback>0</DynFeedback><GlueType>0</GlueType><WalkPreference>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType>0</ObjType><Comment V='null'/><IsDropSource>0</IsDropSource><NoLiveDynamics>0</NoLiveDynamics><LocalizeMerge>0</LocalizeMerge><Calendar>0</Calendar><LangID>1033</LangID><ShapeKeywords V='null'/><DropOnPageScale>1</DropOnPageScale></Misc><Event><TheData F='No Formula'>0</TheData><TheText F='No Formula'>0</TheText><EventDblClick F='No Formula'>0</EventDblClick><EventXFMod F='No Formula'>0</EventXFMod><EventDrop F='No Formula'>0</EventDrop></Event><Help><HelpTopic V='null'/><Copyright V='null'/></Help><LayerMem><LayerMember V='null'/></LayerMem><RulerGrid><XRulerDensity>32</XRulerDensity><YRulerDensity>32</YRulerDensity><XRulerOrigin>0</XRulerOrigin><YRulerOrigin>0</YRulerOrigin><XGridDensity>8</XGridDensity><YGridDensity>8</YGridDensity><XGridSpacing>0</XGridSpacing><YGridSpacing>0</YGridSpacing><XGridOrigin>0</XGridOrigin><YGridOrigin>0</YGridOrigin></RulerGrid><Image><Gamma>1</Gamma><Contrast>0.5</Contrast><Brightness>0.5</Brightness><Sharpen>0</Sharpen><Blur>0</Blur><Denoise>0</Denoise><Transparency>0</Transparency></Image><Group><SelectMode>1</SelectMode><DisplayMode>2</DisplayMode><IsDropTarget>0</IsDropTarget><IsSnapTarget>1</IsSnapTarget><IsTextEditTarget>1</IsTextEditTarget><DontMoveChildren>0</DontMoveChildren></Group><Layout><ShapePermeableX>0</ShapePermeableX><ShapePermeableY>0</ShapePermeableY><ShapePermeablePlace>0</ShapePermeablePlace><ShapeFixedCode>0</ShapeFixedCode><ShapePlowCode>0</ShapePlowCode><ShapeRouteStyle>0</ShapeRouteStyle><ConFixedCode>0</ConFixedCode><ConLineJumpCode>0</ConLineJumpCode><ConLineJumpStyle>0</ConLineJumpStyle><ConLineJumpDirX>0</ConLineJumpDirX><ConLineJumpDirY>0</ConLineJumpDirY><ShapePlaceFlip>0</ShapePlaceFlip><ConLineRouteExt>0</ConLineRouteExt><ShapeSplit>0</ShapeSplit><ShapeSplittable>0</ShapeSplittable></Layout><PageLayout><ResizePage>0</ResizePage><EnableGrid>0</EnableGrid><DynamicsOff>0</DynamicsOff><CtrlAsInput>0</CtrlAsInput><PlaceStyle>0</PlaceStyle><RouteStyle>0</RouteStyle><PlaceDepth>0</PlaceDepth><PlowCode>0</PlowCode><LineJumpCode>1</LineJumpCode><LineJumpStyle>0</LineJumpStyle><PageLineJumpDirX>0</PageLineJumpDirX><PageLineJumpDirY>0</PageLineJumpDirY><LineToNodeX>0.125</LineToNodeX><LineToNodeY>0.125</LineToNodeY><BlockSizeX>0.25</BlockSizeX><BlockSizeY>0.25</BlockSizeY><AvenueSizeX>0.375</AvenueSizeX><AvenueSizeY>0.375</AvenueSizeY><LineToLineX>0.125</LineToLineX><LineToLineY>0.125</LineToLineY><LineJumpFactorX>0.66666666666667</LineJumpFactorX><LineJumpFactorY>0.66666666666667</LineJumpFactorY><LineAdjustFrom>0</LineAdjustFrom><LineAdjustTo>0</LineAdjustTo><PlaceFlip>0</PlaceFlip><LineRouteExt>0</LineRouteExt><PageShapeSplit>0</PageShapeSplit></PageLayout><PrintProps><PageLeftMargin>0.25</PageLeftMargin><PageRightMargin>0.25</PageRightMargin><PageTopMargin>0.25</PageTopMargin><PageBottomMargin>0.25</PageBottomMargin><ScaleX>1</ScaleX><ScaleY>1</ScaleY><PagesX>1</PagesX><PagesY>1</PagesY><CenterX>0</CenterX><CenterY>0</CenterY><OnPage>0</OnPage><PrintGrid>0</PrintGrid><PrintPageOrientation>1</PrintPageOrientation><PaperKind>1</PaperKind><PaperSource>7</PaperSource></PrintProps><PageProps><PageWidth Unit='NUM' F='No Formula'>0</PageWidth><PageHeight Unit='NUM' F='No Formula'>0</PageHeight><ShdwOffsetX Unit='NUM' F='No Formula'>0</ShdwOffsetX><ShdwOffsetY Unit='NUM' F='No Formula'>0</ShdwOffsetY><PageScale F='No Formula'>0</PageScale><DrawingScale F='No Formula'>0</DrawingScale><DrawingSizeType F='No Formula'>0</DrawingSizeType><DrawingScaleType F='No Formula'>0</DrawingScaleType><InhibitSnap F='No Formula'>0</InhibitSnap><UIVisibility F='No Formula'>0</UIVisibility><ShdwType F='No Formula'>0</ShdwType><ShdwObliqueAngle Unit='NUM' F='No Formula'>0</ShdwObliqueAngle><ShdwScaleFactor F='No Formula'>0</ShdwScaleFactor></PageProps><Char IX='0'><Font>4</Font><Color>0</Color><Style>0</Style><Case>0</Case><Pos>0</Pos><FontScale>1</FontScale><Size>0.1666666666666667</Size><DblUnderline>0</DblUnderline><Overline>0</Overline><Strikethru>0</Strikethru><Highlight>0</Highlight><DoubleStrikethrough>0</DoubleStrikethrough><RTLText>0</RTLText><UseVertical>0</UseVertical><Letterspace>0</Letterspace><ColorTrans>0</ColorTrans><AsianFont>0</AsianFont><ComplexScriptFont>0</ComplexScriptFont><LocalizeFont>0</LocalizeFont><ComplexScriptSize>-1</ComplexScriptSize><LangID>1033</LangID></Char><Para IX='0'><IndFirst>0</IndFirst><IndLeft>0</IndLeft><IndRight>0</IndRight><SpLine>-1.2</SpLine><SpBefore>0</SpBefore><SpAfter>0</SpAfter><HorzAlign>1</HorzAlign><Bullet>0</Bullet><BulletStr V='null'/><BulletFont>0</BulletFont><LocalizeBulletFont>0</LocalizeBulletFont><BulletFontSize>-1</BulletFontSize><TextPosAfterBullet>0</TextPosAfterBullet><Flags>0</Flags></Para><Tabs IX='0'/></StyleSheet><StyleSheet ID='1' NameU='Text Only' Name='Pouze text' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern>0</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin>0</LeftMargin><RightMargin>0</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>0</VerticalAlign><TextBkgnd>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Para IX='0'><IndFirst F='Inh'>0</IndFirst><IndLeft F='Inh'>0</IndLeft><IndRight F='Inh'>0</IndRight><SpLine F='Inh'>-1.2</SpLine><SpBefore F='Inh'>0</SpBefore><SpAfter F='Inh'>0</SpAfter><HorzAlign>0</HorzAlign><Bullet F='Inh'>0</Bullet><BulletStr F='Inh'/><BulletFont F='Inh'>0</BulletFont><LocalizeBulletFont F='Inh'>0</LocalizeBulletFont><BulletFontSize F='Inh'>-1</BulletFontSize><TextPosAfterBullet F='Inh'>0</TextPosAfterBullet><Flags F='Inh'>0</Flags></Para></StyleSheet><StyleSheet ID='2' NameU='None' Name='Žádný' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern>0</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill></StyleSheet><StyleSheet ID='3' NameU='Normal' Name='Normální' LineStyle='0' FillStyle='0' TextStyle='0'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><TextBlock><LeftMargin Unit='PT'>0.05555555555555555</LeftMargin><RightMargin Unit='PT'>0.05555555555555555</RightMargin><TopMargin Unit='PT'>0.05555555555555555</TopMargin><BottomMargin Unit='PT'>0.05555555555555555</BottomMargin><VerticalAlign F='Inh'>1</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock></StyleSheet><StyleSheet ID='4' NameU='Guide' Name='Guide' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight Unit='PT'>0</LineWeight><LineColor>4</LineColor><LinePattern>23</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>1</FillForegnd><FillBkgnd F='Inh'>0</FillBkgnd><FillPattern>0</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin Unit='PT' F='Inh'>0.05555555555555555</LeftMargin><RightMargin Unit='PT' F='Inh'>0.05555555555555555</RightMargin><TopMargin>0</TopMargin><BottomMargin>0</BottomMargin><VerticalAlign>2</VerticalAlign><TextBkgnd F='Inh'>0</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Misc><NoObjHandles F='Inh'>0</NoObjHandles><NonPrinting>1</NonPrinting><NoCtlHandles F='Inh'>0</NoCtlHandles><NoAlignBox F='Inh'>0</NoAlignBox><UpdateAlignBox F='Inh'>0</UpdateAlignBox><HideText F='Inh'>0</HideText><DynFeedback F='Inh'>0</DynFeedback><GlueType F='Inh'>0</GlueType><WalkPreference F='Inh'>0</WalkPreference><BegTrigger F='No Formula'>0</BegTrigger><EndTrigger F='No Formula'>0</EndTrigger><ObjType F='Inh'>0</ObjType><Comment F='Inh'/><IsDropSource F='Inh'>0</IsDropSource><NoLiveDynamics F='Inh'>0</NoLiveDynamics><LocalizeMerge F='Inh'>0</LocalizeMerge><Calendar F='Inh'>0</Calendar><LangID F='Inh'>1033</LangID><ShapeKeywords F='Inh'/><DropOnPageScale F='Inh'>1</DropOnPageScale></Misc><Layout><ShapePermeableX>1</ShapePermeableX><ShapePermeableY>1</ShapePermeableY><ShapePermeablePlace>1</ShapePermeablePlace><ShapeFixedCode F='Inh'>0</ShapeFixedCode><ShapePlowCode F='Inh'>0</ShapePlowCode><ShapeRouteStyle F='Inh'>0</ShapeRouteStyle><ConFixedCode F='Inh'>0</ConFixedCode><ConLineJumpCode F='Inh'>0</ConLineJumpCode><ConLineJumpStyle F='Inh'>0</ConLineJumpStyle><ConLineJumpDirX F='Inh'>0</ConLineJumpDirX><ConLineJumpDirY F='Inh'>0</ConLineJumpDirY><ShapePlaceFlip F='Inh'>0</ShapePlaceFlip><ConLineRouteExt F='Inh'>0</ConLineRouteExt><ShapeSplit F='Inh'>0</ShapeSplit><ShapeSplittable F='Inh'>0</ShapeSplittable></Layout><Char IX='0'><Font F='Inh'>4</Font><Color>4</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size>0.125</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID F='Inh'>1033</LangID></Char></StyleSheet><StyleSheet ID='6' NameU='Connector' Name='Connector' LineStyle='7' FillStyle='7' TextStyle='7'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.003333333333333334</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize>1</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize>1</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='Inh'>0</FillForegnd><FillBkgnd F='Inh'>1</FillBkgnd><FillPattern F='Inh'>1</FillPattern><ShdwForegnd F='Inh'>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><TextBlock><LeftMargin Unit='PT' F='Inh'>0.05555555555555555</LeftMargin><RightMargin Unit='PT' F='Inh'>0.05555555555555555</RightMargin><TopMargin Unit='PT' F='Inh'>0.05555555555555555</TopMargin><BottomMargin Unit='PT' F='Inh'>0.05555555555555555</BottomMargin><VerticalAlign F='Inh'>1</VerticalAlign><TextBkgnd>2</TextBkgnd><DefaultTabStop F='Inh'>0.5</DefaultTabStop><TextDirection F='Inh'>0</TextDirection><TextBkgndTrans F='Inh'>0</TextBkgndTrans></TextBlock><Char IX='0'><Font F='Inh'>4</Font><Color F='Inh'>0</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size Unit='PT'>0.1111111111111111</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID>1033</LangID></Char></StyleSheet><StyleSheet ID='7' NameU='Visio 90' Name='Visio 90' LineStyle='3' FillStyle='3' TextStyle='3'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>1</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor>0</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd>0</FillForegnd><FillBkgnd>1</FillBkgnd><FillPattern F='Inh'>1</FillPattern><ShdwForegnd>0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><Char IX='0'><Font F='Inh'>4</Font><Color>0</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size F='Inh'>0.1666666666666667</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID>1033</LangID></Char></StyleSheet><StyleSheet ID='8' NameU='Callout' Name='Callout' LineStyle='9' FillStyle='9' TextStyle='9'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight>0.003333333333333334</LineWeight><LineColor F='Inh'>#000000</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize>1</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize>1</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Char IX='0'><Font F='Inh'>4</Font><Color F='Inh'>0</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size Unit='PT'>0.1111111111111111</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID F='Inh'>1033</LangID></Char><Para IX='0'><IndFirst F='Inh'>0</IndFirst><IndLeft F='Inh'>0</IndLeft><IndRight F='Inh'>0</IndRight><SpLine F='Inh'>-1.2</SpLine><SpBefore F='Inh'>0</SpBefore><SpAfter F='Inh'>0</SpAfter><HorzAlign>0</HorzAlign><Bullet F='Inh'>0</Bullet><BulletStr F='Inh'/><BulletFont F='Inh'>0</BulletFont><LocalizeBulletFont F='Inh'>0</LocalizeBulletFont><BulletFontSize F='Inh'>-1</BulletFontSize><TextPosAfterBullet F='Inh'>0</TextPosAfterBullet><Flags F='Inh'>0</Flags></Para></StyleSheet><StyleSheet ID='9' NameU='Visio 00' Name='Visio 00' LineStyle='0' FillStyle='0' TextStyle='0'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>1</EnableFillProps><EnableTextProps>1</EnableTextProps><HideForApply>1</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.01</LineWeight><LineColor F='HSL(0,0,0)'>#000000</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>2</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow F='Inh'>0</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>2</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line><Fill><FillForegnd F='HSL(144,116,225)'>#e8eef7</FillForegnd><FillBkgnd F='HSL(144,106,193)'>#b7c9e3</FillBkgnd><FillPattern F='Inh'>1</FillPattern><ShdwForegnd F='HSL(144,116,125)'>#4979c0</ShdwForegnd><ShdwBkgnd F='Inh'>1</ShdwBkgnd><ShdwPattern F='Inh'>0</ShdwPattern><FillForegndTrans F='Inh'>0</FillForegndTrans><FillBkgndTrans F='Inh'>0</FillBkgndTrans><ShdwForegndTrans F='Inh'>0</ShdwForegndTrans><ShdwBkgndTrans F='Inh'>0</ShdwBkgndTrans><ShapeShdwType F='Inh'>0</ShapeShdwType><ShapeShdwOffsetX F='Inh'>0</ShapeShdwOffsetX><ShapeShdwOffsetY F='Inh'>0</ShapeShdwOffsetY><ShapeShdwObliqueAngle F='Inh'>0</ShapeShdwObliqueAngle><ShapeShdwScaleFactor F='Inh'>1</ShapeShdwScaleFactor></Fill><Char IX='0'><Font F='Inh'>4</Font><Color>0</Color><Style F='Inh'>0</Style><Case F='Inh'>0</Case><Pos F='Inh'>0</Pos><FontScale F='Inh'>1</FontScale><Size F='Inh'>0.1666666666666667</Size><DblUnderline F='Inh'>0</DblUnderline><Overline F='Inh'>0</Overline><Strikethru F='Inh'>0</Strikethru><Highlight F='Inh'>0</Highlight><DoubleStrikethrough F='Inh'>0</DoubleStrikethrough><RTLText F='Inh'>0</RTLText><UseVertical F='Inh'>0</UseVertical><Letterspace F='Inh'>0</Letterspace><ColorTrans F='Inh'>0</ColorTrans><AsianFont F='Inh'>0</AsianFont><ComplexScriptFont F='Inh'>0</ComplexScriptFont><LocalizeFont F='Inh'>0</LocalizeFont><ComplexScriptSize F='Inh'>-1</ComplexScriptSize><LangID F='Inh'>1033</LangID></Char></StyleSheet><StyleSheet ID='10' NameU='Connector Arrow' Name='Connector Arrow' LineStyle='6' FillStyle='6' TextStyle='6'><StyleProp><EnableLineProps>1</EnableLineProps><EnableFillProps>0</EnableFillProps><EnableTextProps>0</EnableTextProps><HideForApply>0</HideForApply></StyleProp><Line><LineWeight F='Inh'>0.003333333333333334</LineWeight><LineColor F='Inh'>0</LineColor><LinePattern F='Inh'>1</LinePattern><Rounding F='Inh'>0</Rounding><EndArrowSize F='Inh'>1</EndArrowSize><BeginArrow F='Inh'>0</BeginArrow><EndArrow>4</EndArrow><LineCap F='Inh'>0</LineCap><BeginArrowSize F='Inh'>1</BeginArrowSize><LineColorTrans F='Inh'>0</LineColorTrans></Line></StyleSheet></StyleSheets><DocumentSheet NameU='TheDoc' Name='TheDoc' LineStyle='0' FillStyle='0' TextStyle='0'><DocProps><OutputFormat>0</OutputFormat><LockPreview>0</LockPreview><AddMarkup>0</AddMarkup><ViewMarkup>0</ViewMarkup><PreviewQuality>0</PreviewQua...
[truncated message content] |