|
From: <ob...@us...> - 2010-03-15 13:25:35
|
Revision: 700
http://scstudio.svn.sourceforge.net/scstudio/?rev=700&view=rev
Author: obouda
Date: 2010-03-15 13:25:25 +0000 (Mon, 15 Mar 2010)
Log Message:
-----------
New feature: instances field drawing (Menu--Check--Drawing--Instances Field)
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/instancesfielddlg.cpp
trunk/src/view/visio/addon/instancesfielddlg.h
trunk/src/view/visio/addon/resource.h
trunk/src/view/visio/addon/visualize.h
Modified: trunk/src/view/visio/addon/addon.cpp
===================================================================
--- trunk/src/view/visio/addon/addon.cpp 2010-03-14 23:34:18 UTC (rev 699)
+++ trunk/src/view/visio/addon/addon.cpp 2010-03-15 13:25:25 UTC (rev 700)
@@ -309,14 +309,8 @@
TRACE("CStudioAddon::Run() add all messages to the current selection");
return pDocumentMonitor->OnMenuSelectAllMessages(vsoApp, true);
case CDocumentMonitor::MENU_INSTANCES_FIELD:
- {
- TRACE("CStudioAddon::Run() menu item 'Check--Drawing--Instances Field'");
- VAORC result = DisplayInstancesFieldDialog();
- if (result != VAORC_SUCCESS)
- return result;
- else
- return pDocumentMonitor->OnMenuInstancesField(vsoApp);
- }
+ TRACE("CStudioAddon::Run() menu item 'Check--Drawing--Instances Field'");
+ return DoInstancesField(pDocumentMonitor, vsoApp);
default:
TRACE("CStudioAddon::Run() unexpected event id=" << iEvent);
@@ -375,13 +369,27 @@
return VAORC_SUCCESS;
}
-VAORC CStudioAddon::DisplayInstancesFieldDialog()
+VAORC CStudioAddon::DoInstancesField(CDocumentMonitor* documentMonitor, Visio::IVApplicationPtr vsoApp)
{
- TRACE("CStudioAddon::DisplayInstancesFieldDialog() called");
+ TRACE("CStudioAddon::DoInstancesField() called");
CInstancesFieldDlg dlg;
-
- dlg.DoModal();
- return VAORC_SUCCESS;
+ if (!dlg.DoModal()) return VAORC_SUCCESS;
+
+ if (!documentMonitor->IsEmpty(vsoApp))
+ {
+ int res = MessageBox(GetActiveWindow(),
+ _T("Current page is not empty.\n\nDraw the instances anyway?\n"),
+ _T("The page is not empty"),
+ MB_OKCANCEL | MB_ICONWARNING
+ );
+ if (res != IDOK) return VAORC_SUCCESS;
+ }
+
+ return documentMonitor->DrawInstancesField(
+ vsoApp, dlg.m_instances_cnt,
+ (dlg.m_use_const_spacing ? dlg.m_spacing : 0.0f),
+ dlg.m_margin_left, dlg.m_margin_top, dlg.m_margin_right
+ );
}
HRESULT CStudioAddon::HandleVisioEvent(
Modified: trunk/src/view/visio/addon/addon.h
===================================================================
--- trunk/src/view/visio/addon/addon.h 2010-03-14 23:34:18 UTC (rev 699)
+++ trunk/src/view/visio/addon/addon.h 2010-03-15 13:25:25 UTC (rev 700)
@@ -36,7 +36,7 @@
VAORC DisplaySimulatorOptions();
VAORC DisplayCheckOptions();
- VAORC DisplayInstancesFieldDialog();
+ VAORC DoInstancesField(CDocumentMonitor* documentMonitor, Visio::IVApplicationPtr vsoApp);
virtual HRESULT HandleVisioEvent(
IUnknown *ipSink, // [in] ipSink [assert]
Modified: trunk/src/view/visio/addon/dllmodule.rc
===================================================================
--- trunk/src/view/visio/addon/dllmodule.rc 2010-03-14 23:34:18 UTC (rev 699)
+++ trunk/src/view/visio/addon/dllmodule.rc 2010-03-15 13:25:25 UTC (rev 700)
@@ -96,7 +96,7 @@
CONTROL "",IDC_DRAWING2,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_SHOWSELALWAYS | WS_BORDER | WS_HSCROLL | WS_TABSTOP,110,14,100,92
END
-IDD_INSTANCES_FIELD_OPTIONS DIALOGEX 0, 0, 186, 114
+IDD_INSTANCES_FIELD_OPTIONS DIALOGEX 0, 0, 186, 137
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Instances Field Options"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
@@ -105,15 +105,20 @@
PUSHBUTTON "Cancel",IDCANCEL,131,25,50,14
LTEXT "Number of instances:",IDC_STATIC,5,5,70,12,SS_CENTERIMAGE
EDITTEXT IDC_IF_INSTANCES_CNT,80,5,40,14,ES_AUTOHSCROLL
- LTEXT "Margins on the side:",IDC_IF_LBL1,12,55,70,12,SS_CENTERIMAGE
- EDITTEXT IDC_IF_MARGIN_SIDE,87,55,40,14,ES_AUTOHSCROLL
- LTEXT "Top margin:",IDC_IF_LBL2,12,73,70,12,SS_CENTERIMAGE
- EDITTEXT IDC_IF_MARGIN_TOP,87,73,40,14,ES_AUTOHSCROLL
- LTEXT "Instances height:",IDC_IF_LBL3,12,90,70,12,SS_CENTERIMAGE
- EDITTEXT IDC_IF_INSTANCES_HEIGHT,87,90,40,14,ES_AUTOHSCROLL
- GROUPBOX "",IDC_OPTIONS_GROUP_BOX,5,42,176,68
+ GROUPBOX "",IDC_OPTIONS_GROUP_BOX,5,42,176,90
PUSHBUTTON "+",IDC_OPTIONS_SWITCH_BTN,5,41,10,10
- LTEXT " Appearance options ",IDC_OPTIONS_SWITCH_LBL,19,41,69,8
+ LTEXT " Options ",IDC_OPTIONS_SWITCH_LBL,19,41,30,8
+ CONTROL "Use constant spacing between instances",IDC_IF_SPACING_SWITCH,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,57,146,10
+ EDITTEXT IDC_IF_SPACING,69,69,40,14,ES_AUTOHSCROLL
+ LTEXT "Spacing [mm]:",IDC_IF_LBL1,19,71,46,8
+ LTEXT "Margins [mm]",IDC_IF_LBL2,10,87,44,8
+ LTEXT "Left:",IDC_IF_LBL3,19,99,16,8
+ EDITTEXT IDC_IF_MARGIN_LEFT,48,97,40,14,ES_AUTOHSCROLL
+ LTEXT "Right:",IDC_IF_LBL4,100,99,30,8
+ EDITTEXT IDC_IF_MARGIN_RIGHT,130,97,40,14,ES_AUTOHSCROLL
+ LTEXT "Top:",IDC_IF_LBL5,19,115,16,8
+ EDITTEXT IDC_IF_MARGIN_TOP,48,113,40,14,ES_AUTOHSCROLL
END
@@ -226,8 +231,18 @@
BEGIN
LEFTMARGIN, 5
RIGHTMARGIN, 181
+ VERTGUIDE, 10
+ VERTGUIDE, 19
+ VERTGUIDE, 48
+ VERTGUIDE, 100
+ VERTGUIDE, 130
TOPMARGIN, 5
- BOTTOMMARGIN, 109
+ BOTTOMMARGIN, 132
+ HORZGUIDE, 76
+ HORZGUIDE, 107
+ HORZGUIDE, 111
+ HORZGUIDE, 123
+ HORZGUIDE, 127
END
END
#endif // APSTUDIO_INVOKED
Modified: trunk/src/view/visio/addon/document.cpp
===================================================================
--- trunk/src/view/visio/addon/document.cpp 2010-03-14 23:34:18 UTC (rev 699)
+++ trunk/src/view/visio/addon/document.cpp 2010-03-15 13:25:25 UTC (rev 700)
@@ -586,6 +586,108 @@
m_vsoDocument->CustomToolbars->UpdateUI();
}
+VAORC CDocumentMonitor::DrawInstancesField(Visio::IVApplicationPtr vsoApp, int instancesCnt, Coordinate spacing, Coordinate marginLeft, Coordinate marginTop, Coordinate marginRight)
+{
+ TRACE("CDocumentMonitor::DrawInstancesField() Drawing instances field");
+
+ if (instancesCnt < 0 || spacing < 0 || marginLeft < 0 || marginTop < 0 || marginRight < 0)
+ {
+ TRACE("CDocumentMonitor::DrawInstancesField() Bad arguments (some are negative)");
+ return VAORC_FAILURE;
+ }
+
+ Visio::IVPagePtr vsoPage = vsoApp->GetActivePage();
+ int oldShapesCount = vsoPage->Shapes->Count;
+ CDrawingVisualizer visualizer(m_vsoApp);
+
+ // compute dynamic spacing
+ if (spacing == 0.0f && instancesCnt > 1)
+ {
+ Coordinate pageWidth = vsoPage->PageSheet->CellsSRC[visSectionObject][visRowPage][visPageWidth]->Result[visMillimeters];
+ spacing = (pageWidth - marginRight - marginLeft) / (instancesCnt - 1);
+ }
+
+ // build a bmsc according to the parameters
+ BMscPtr bmsc(new BMsc);
+
+ for (int i=0; i<instancesCnt; i++)
+ {
+ Coordinate x = marginLeft + i*spacing;
+ Coordinate height = 30;
+ Coordinate width = 10;
+
+ InstancePtr inst(new Instance(_T("NAME")));
+ inst->set_line_begin(MscPoint(x, marginTop));
+ inst->set_line_end(MscPoint(x, marginTop + height));
+ inst->set_width(width);
+
+ bmsc->add_instance(inst);
+ }
+
+ /* FIXME: crashes, we will make visualize_bmsc public in the meantime
+ std::vector<MscPtr> msc;
+ msc.push_back(bmsc);
+ visualizer.visualize_msc(vsoPage, msc);
+ */
+ visualizer.visualize_bmsc(vsoPage, bmsc);
+
+ // select the newly created instances
+ Visio::IVSelectionPtr selection = vsoPage->CreateSelection(Visio::visSelTypeEmpty, Visio::visSelModeSkipSuper);
+ for(int i=oldShapesCount+1; i<=vsoPage->Shapes->Count; i++)
+ {
+ Visio::IVShapePtr shape = vsoPage->Shapes->Item[i];
+ if (get_shape_type(shape) == ST_BMSC_INSTANCE)
+ selection->Select(shape, Visio::visSelect);
+ }
+ vsoApp->ActiveWindow->Selection = selection;
+
+
+
+ /*
+ Visio::IVPagePtr vsoPage = vsoApp->GetActivePage();
+ //double page_height = align5(shape->ContainingPage->PageSheet->CellsSRC[visSectionObject][visRowPage][visPageHeight]->Result[visMillimeters]);
+ double page_width = vsoPage->PageSheet->CellsSRC[visSectionObject][visRowPage][visPageWidth]->Result[visMillimeters];
+ long scope_id = m_vsoApp->BeginUndoScope("Instances Field") + page_width;
+ // temporary mappers Visio shape-id --> msc.h
+ //std::map<long,InstancePtr> instances;
+ //MscMessageMap messages;
+ //TimeRelationEventMap time_relations;
+ int instcnt = 0;
+ // first walk through all shapes: create objects
+ for(int i = 1; i <= vsoPage->Shapes->Count; i++)
+ {
+ Visio::IVShapePtr shape = vsoPage->Shapes->Item[i];
+
+ TShapeType type = get_shape_type(shape);
+ if(type == ST_BMSC_INSTANCE)
+ {
+ instcnt++;
+ //instances[shape->ID] = new_instance_ptr(shape);
+ }
+ }
+
+ if(instcnt < 2)
+ {
+ MessageBox(GetActiveWindow(),
+ _T("This page contains less than 2 instances.\n"),
+ _T("Less than 2 instances"), MB_ICONERROR);
+ m_vsoApp->EndUndoScope(scope_id, false);
+ return VAORC_FAILURE;
+ }
+
+ Visio::IVDocumentPtr bmsc_stencil = vsoApp->Documents->Item[BMSC_STENCIL_NAME];
+ Visio::IVMasterPtr instance_master = bmsc_stencil->Masters->Item["Line Instance"];
+ Visio::IVMasterPtr message_master = bmsc_stencil->Masters->Item["Message (Right)"];
+ Visio::IVShapePtr m1 = vsoPage->Drop(message_master, 0, 0);
+ Visio::IVShapePtr m2 = vsoPage->Drop(message_master, 3, 0);
+ m1->Text = "INVITE 1";
+ m2->Text = "INVITE 2";
+
+ m_vsoApp->EndUndoScope(scope_id, true);
+ */
+ return VAORC_SUCCESS;
+}
+
TransformerPtrList::const_iterator CDocumentMonitor::find_transformer(const std::wstring& name) const
{
for(TransformerPtrList::const_iterator cpos = m_transformers.begin();
@@ -864,14 +966,11 @@
return VAORC_SUCCESS;
}
-/**
- * Selects all instances or all messages on the active page.
- * @param vsoApp the application to make selection in
- * @param select_instances when true, selects all instances,
- * when false, selects all messages (including lost and found messages)
- * @param add_to_selection when true, adds all objects to existing selection,
- * when false, the old selection is dropped
- */
+bool CDocumentMonitor::IsEmpty(Visio::IVApplicationPtr vsoApp)
+{
+ return (vsoApp->ActivePage->Shapes->Count == 0);
+}
+
void CDocumentMonitor::selectAll(Visio::IVApplicationPtr vsoApp, bool select_instances, bool add_to_selection)
{
Visio::IVPagePtr page = vsoApp->ActivePage;
@@ -925,57 +1024,6 @@
return VAORC_SUCCESS;
}
-VAORC CDocumentMonitor::OnMenuInstancesField(Visio::IVApplicationPtr vsoApp)
-{
- Visio::IVPagePtr vsoPage = vsoApp->GetActivePage();
- //vsoPage->InsertObject("Instance", visInsertAsControl);
-
- // FIXME: draw instances field according to params set in the dialog
- /*
- Visio::IVPagePtr vsoPage = vsoApp->GetActivePage();
- //double page_height = align5(shape->ContainingPage->PageSheet->CellsSRC[visSectionObject][visRowPage][visPageHeight]->Result[visMillimeters]);
- double page_width = vsoPage->PageSheet->CellsSRC[visSectionObject][visRowPage][visPageWidth]->Result[visMillimeters];
- long scope_id = m_vsoApp->BeginUndoScope("Instances Field") + page_width;
- // temporary mappers Visio shape-id --> msc.h
- //std::map<long,InstancePtr> instances;
- //MscMessageMap messages;
- //TimeRelationEventMap time_relations;
- int instcnt = 0;
- // first walk through all shapes: create objects
- for(int i = 1; i <= vsoPage->Shapes->Count; i++)
- {
- Visio::IVShapePtr shape = vsoPage->Shapes->Item[i];
-
- TShapeType type = get_shape_type(shape);
- if(type == ST_BMSC_INSTANCE)
- {
- instcnt++;
- //instances[shape->ID] = new_instance_ptr(shape);
- }
- }
-
- if(instcnt < 2)
- {
- MessageBox(GetActiveWindow(),
- _T("This page contains less than 2 instances.\n"),
- _T("Less than 2 instances"), MB_ICONERROR);
- m_vsoApp->EndUndoScope(scope_id, false);
- return VAORC_FAILURE;
- }
-
- Visio::IVDocumentPtr bmsc_stencil = vsoApp->Documents->Item[BMSC_STENCIL_NAME];
- Visio::IVMasterPtr instance_master = bmsc_stencil->Masters->Item["Line Instance"];
- Visio::IVMasterPtr message_master = bmsc_stencil->Masters->Item["Message (Right)"];
- Visio::IVShapePtr m1 = vsoPage->Drop(message_master, 0, 0);
- Visio::IVShapePtr m2 = vsoPage->Drop(message_master, 3, 0);
- m1->Text = "INVITE 1";
- m2->Text = "INVITE 2";
-
- m_vsoApp->EndUndoScope(scope_id, true);
- */
- return VAORC_SUCCESS;
-}
-
void CDocumentMonitor::ShowReportView()
{
if(m_reportVisible)
Modified: trunk/src/view/visio/addon/document.h
===================================================================
--- trunk/src/view/visio/addon/document.h 2010-03-14 23:34:18 UTC (rev 699)
+++ trunk/src/view/visio/addon/document.h 2010-03-15 13:25:25 UTC (rev 700)
@@ -76,7 +76,6 @@
VAORC OnMenuSimulationStart(Visio::IVApplicationPtr vsoApp);
VAORC OnMenuSimulationStop(Visio::IVApplicationPtr vsoApp);
VAORC OnMenuVerify(Visio::IVApplicationPtr vsoApp);
- VAORC OnMenuInstancesField(Visio::IVApplicationPtr vsoApp);
void ShowReportView();
void OnHideReportView();
@@ -96,8 +95,27 @@
void OnSimulationResult();
void OnSimulationError();
+ /**
+ * Tells whether the active document page is empty.
+ * @param vsoApp the application for which to tell the result
+ * @return true when the active document page is empty, false if not
+ */
+ bool IsEmpty(Visio::IVApplicationPtr vsoApp);
+
void ToggleToolbarItems(bool modifiersPressed);
+ /**
+ * Draws a field of instances on the current page.
+ * @param vsoApp the monitored application where to draw
+ * @param instancesCnt number of instances to draw
+ * @param spacing constant spacing between instances; 0 for dynamic
+ * @param marginLeft left margin - horizontal offset where to start
+ * @param marginTop top margin - vertical offset where to start
+ * @param marginRight right margin; used only if spacing=0
+ * @return result: VAORC_SUCCESS or VAORC_FAILURE
+ */
+ VAORC DrawInstancesField(Visio::IVApplicationPtr vsoApp, int instancesCnt, Coordinate spacing, Coordinate marginLeft, Coordinate marginTop, Coordinate marginRight);
+
// event objects for this document
Visio::IVEventPtr m_vsoPageAddedEvent;
Visio::IVEventPtr m_vsoBeforeDocumentClosedEvent;
Modified: trunk/src/view/visio/addon/instancesfielddlg.cpp
===================================================================
--- trunk/src/view/visio/addon/instancesfielddlg.cpp 2010-03-14 23:34:18 UTC (rev 699)
+++ trunk/src/view/visio/addon/instancesfielddlg.cpp 2010-03-15 13:25:25 UTC (rev 700)
@@ -19,6 +19,7 @@
#include "stdafx.h"
#include "dllmodule.h"
#include "instancesfielddlg.h"
+#include "errors.h"
LRESULT CInstancesFieldDlg::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
@@ -28,21 +29,24 @@
DoDataExchange(false);
SetOptionsVisibility(m_optionsVisible);
+ m_spacingSwitchBtn.SetCheck(m_use_const_spacing ? BST_CHECKED : BST_UNCHECKED);
+ m_spacingEdit.EnableWindow(m_use_const_spacing);
+ m_marginRightEdit.EnableWindow(!m_use_const_spacing);
m_instancesCntEdit.SetSel(0, -1);
- return bHandled = FALSE;
+ return bHandled = false;
}
LRESULT CInstancesFieldDlg::OnCloseCmd(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
if(wID == IDOK)
{
- DoDataExchange(TRUE);
+ DoDataExchange(true);
SaveRegistryData();
}
- EndDialog(wID);
+ EndDialog((wID == IDOK));
return 0;
}
@@ -53,6 +57,15 @@
return 0;
}
+LRESULT CInstancesFieldDlg::OnSpacingSwitch(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
+{
+ bool checked = (m_spacingSwitchBtn.GetCheck() == BST_CHECKED);
+ m_use_const_spacing = checked;
+ m_spacingEdit.EnableWindow(m_use_const_spacing);
+ m_marginRightEdit.EnableWindow(!m_use_const_spacing);
+ return 0;
+}
+
void CInstancesFieldDlg::SetOptionsVisibility(bool visible)
{
m_optionsSwitchBtn.SetWindowText((visible ? _T("-") : _T("+")));
@@ -60,46 +73,51 @@
CWindow window = m_optionsGroupBox.GetParent();
RECT windowRect;
window.GetWindowRect(&windowRect);
- windowRect.bottom = windowRect.top + (visible ? 210 : 116);
+ windowRect.bottom = windowRect.top + (visible ? 250 : 116);
window.SetWindowPos(0, &windowRect, SWP_SHOWWINDOW | SWP_NOZORDER | SWP_DRAWFRAME);
RECT groupRect;
m_optionsGroupBox.GetWindowRect(&groupRect);
m_optionsGroupBox.ScreenToClient(&groupRect);
- // note: relative to the dialog window
+ // NOTE: relative to the dialog window
groupRect.top = 67;
- groupRect.bottom = groupRect.top + (visible ? 110 : 8);
+ groupRect.bottom = groupRect.top + (visible ? 150 : 8);
groupRect.left = 8;
groupRect.right = 272;
m_optionsGroupBox.SetWindowPos(0, &groupRect, SWP_SHOWWINDOW | SWP_NOZORDER | SWP_DRAWFRAME);
- for (int i=0; i<ARRAY_SIZE(m_optionEdits); i++) {
- m_optionEdits[i].ShowWindow(visible);
+ m_spacingSwitchBtn.ShowWindow(visible);
+ m_spacingEdit.ShowWindow(visible);
+ for (int i=0; i<ARRAY_SIZE(m_optionItems); i++) {
+ m_optionItems[i].ShowWindow(visible);
}
- for (int i=0; i<ARRAY_SIZE(m_optionLabels); i++) {
- m_optionLabels[i].ShowWindow(visible);
- }
m_instancesCntEdit.SetFocus();
}
int CInstancesFieldDlg::LoadRegistryData()
{
- m_instances_cnt = GetRegistry(GetRegistryFolder(), NULL, _T("InstancesCnt"), DEFAULT_IF_INSTANCES_CNT);
- m_margin_side = GetRegistry(GetRegistryFolder(), NULL, _T("MarginSide"), DEFAULT_IF_MARGIN_SIDE);
- m_margin_top = GetRegistry(GetRegistryFolder(), NULL, _T("MarginTop"), DEFAULT_IF_MARGIN_TOP);
- m_instances_height = GetRegistry(GetRegistryFolder(), NULL, _T("InstancesHeight"), DEFAULT_IF_INSTANCES_HEIGHT);
- m_optionsVisible = GetRegistry(GetRegistryFolder(), NULL, _T("OptionsVisible"), DEFAULT_IF_OPTIONS_VISIBLE);
+ TRACE("CInstancesFieldDlg::LoadRegistryData() loading options from registry");
+ m_instances_cnt = GetRegistry<int> (GetRegistryFolder(), NULL, _T("InstancesCnt"), DEFAULT_IF_INSTANCES_CNT);
+ m_use_const_spacing = GetRegistry<bool> (GetRegistryFolder(), NULL, _T("SpacingSwitch"), DEFAULT_IF_SPACING_SWITCH);
+ m_spacing = GetRegistry<float>(GetRegistryFolder(), NULL, _T("Spacing"), DEFAULT_IF_SPACING);
+ m_margin_left = GetRegistry<float>(GetRegistryFolder(), NULL, _T("MarginLeft"), DEFAULT_IF_MARGIN_LEFT);
+ m_margin_right = GetRegistry<float>(GetRegistryFolder(), NULL, _T("MarginRight"), DEFAULT_IF_MARGIN_RIGHT);
+ m_margin_top = GetRegistry<float>(GetRegistryFolder(), NULL, _T("MarginTop"), DEFAULT_IF_MARGIN_TOP);
+ m_optionsVisible = GetRegistry<bool> (GetRegistryFolder(), NULL, _T("OptionsVisible"), DEFAULT_IF_OPTIONS_VISIBLE);
return 0;
}
int CInstancesFieldDlg::SaveRegistryData()
{
- SetRegistry<int> (HKEY_CURRENT_USER, GetRegistryFolder(), _T("InstancesCnt"), m_instances_cnt);
- SetRegistry<float>(HKEY_CURRENT_USER, GetRegistryFolder(), _T("MarginSide"), m_margin_side);
- SetRegistry<float>(HKEY_CURRENT_USER, GetRegistryFolder(), _T("MarginTop"), m_margin_top);
- SetRegistry<float>(HKEY_CURRENT_USER, GetRegistryFolder(), _T("InstancesHeight"), m_instances_height);
+ TRACE("CInstancesFieldDlg::SaveRegistryData() saving options to registry");
+ SetRegistry<int> (HKEY_CURRENT_USER, GetRegistryFolder(), _T("InstancesCnt"), m_instances_cnt);
+ SetRegistry<bool> (HKEY_CURRENT_USER, GetRegistryFolder(), _T("SpacingSwitch"), m_use_const_spacing);
+ SetRegistry<float>(HKEY_CURRENT_USER, GetRegistryFolder(), _T("Spacing"), m_spacing);
+ SetRegistry<float>(HKEY_CURRENT_USER, GetRegistryFolder(), _T("MarginLeft"), m_margin_left);
+ SetRegistry<float>(HKEY_CURRENT_USER, GetRegistryFolder(), _T("MarginRight"), m_margin_right);
+ SetRegistry<float>(HKEY_CURRENT_USER, GetRegistryFolder(), _T("MarginTop"), m_margin_top);
SetRegistry<bool> (HKEY_CURRENT_USER, GetRegistryFolder(), _T("OptionsVisible"), m_optionsVisible);
return 0;
Modified: trunk/src/view/visio/addon/instancesfielddlg.h
===================================================================
--- trunk/src/view/visio/addon/instancesfielddlg.h 2010-03-14 23:34:18 UTC (rev 699)
+++ trunk/src/view/visio/addon/instancesfielddlg.h 2010-03-15 13:25:25 UTC (rev 700)
@@ -23,6 +23,7 @@
#include <atldlgs.h>
#include <atlctrls.h>
#include <atlddx.h>
+#include <atlwinx.h>
class CInstancesFieldDlg
: public ATL::CDialogImpl<CInstancesFieldDlg>, public CWinDataExchange<CInstancesFieldDlg>
@@ -30,28 +31,36 @@
public:
enum { IDD = IDD_INSTANCES_FIELD_OPTIONS };
int m_instances_cnt;
- float m_margin_side;
+ bool m_use_const_spacing;
+ float m_spacing;
+ float m_margin_left;
+ float m_margin_right;
float m_margin_top;
- float m_instances_height;
const wchar_t* GetRegistryFolder() { return SCSTUDIO_REGISTRY_ROOT _T("\\InstancesField"); }
protected:
BEGIN_DDX_MAP(CInstancesFieldDlg)
DDX_INT_RANGE(IDC_IF_INSTANCES_CNT, m_instances_cnt, 1, 1000)
- DDX_FLOAT(IDC_IF_MARGIN_SIDE, m_margin_side)
+ DDX_FLOAT(IDC_IF_SPACING, m_spacing)
+ DDX_FLOAT(IDC_IF_MARGIN_LEFT, m_margin_left)
+ DDX_FLOAT(IDC_IF_MARGIN_RIGHT, m_margin_right)
DDX_FLOAT(IDC_IF_MARGIN_TOP, m_margin_top)
- DDX_FLOAT(IDC_IF_INSTANCES_HEIGHT, m_instances_height)
- DDX_CONTROL_HANDLE(IDC_IF_INSTANCES_CNT, m_instancesCntEdit);
+ DDX_CONTROL_HANDLE(IDC_IF_INSTANCES_CNT, m_instancesCntEdit)
DDX_CONTROL_HANDLE(IDC_OPTIONS_SWITCH_BTN, m_optionsSwitchBtn)
DDX_CONTROL_HANDLE(IDC_OPTIONS_GROUP_BOX, m_optionsGroupBox)
- DDX_CONTROL_HANDLE(IDC_IF_MARGIN_SIDE, m_optionEdits[0])
- DDX_CONTROL_HANDLE(IDC_IF_MARGIN_TOP, m_optionEdits[1])
- DDX_CONTROL_HANDLE(IDC_IF_INSTANCES_HEIGHT, m_optionEdits[2])
- DDX_CONTROL_HANDLE(IDC_IF_LBL1, m_optionLabels[0])
- DDX_CONTROL_HANDLE(IDC_IF_LBL2, m_optionLabels[1])
- DDX_CONTROL_HANDLE(IDC_IF_LBL3, m_optionLabels[2])
+ DDX_CONTROL_HANDLE(IDC_IF_SPACING_SWITCH, m_spacingSwitchBtn)
+ DDX_CONTROL_HANDLE(IDC_IF_SPACING, m_spacingEdit)
+ DDX_CONTROL_HANDLE(IDC_IF_MARGIN_RIGHT, m_marginRightEdit)
+ DDX_CONTROL_HANDLE(IDC_IF_MARGIN_LEFT, m_optionItems[0])
+ DDX_CONTROL_HANDLE(IDC_IF_MARGIN_LEFT, m_optionItems[1])
+ DDX_CONTROL_HANDLE(IDC_IF_MARGIN_TOP, m_optionItems[2])
+ DDX_CONTROL_HANDLE(IDC_IF_LBL1, m_optionItems[3])
+ DDX_CONTROL_HANDLE(IDC_IF_LBL2, m_optionItems[4])
+ DDX_CONTROL_HANDLE(IDC_IF_LBL3, m_optionItems[5])
+ DDX_CONTROL_HANDLE(IDC_IF_LBL4, m_optionItems[6])
+ DDX_CONTROL_HANDLE(IDC_IF_LBL5, m_optionItems[7])
END_DDX_MAP()
BEGIN_MSG_MAP(CInstancesFieldDlg)
@@ -59,6 +68,7 @@
COMMAND_ID_HANDLER(IDOK, OnCloseCmd)
COMMAND_ID_HANDLER(IDCANCEL, OnCloseCmd)
COMMAND_ID_HANDLER(IDC_OPTIONS_SWITCH_BTN, OnOptionsSwitch)
+ COMMAND_ID_HANDLER(IDC_IF_SPACING_SWITCH, OnSpacingSwitch)
// FIXME: would like to make the label switch the options as well, but the following does not work:
//COMMAND_ID_HANDLER(IDC_OPTIONS_SWITCH_LBL, OnOptionsSwitch)
END_MSG_MAP()
@@ -71,6 +81,7 @@
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnCloseCmd(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnOptionsSwitch(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
+ LRESULT OnSpacingSwitch(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
int LoadRegistryData();
int SaveRegistryData();
@@ -79,17 +90,22 @@
bool m_optionsVisible;
CButton m_optionsSwitchBtn;
+ CButton m_spacingSwitchBtn;
CEdit m_instancesCntEdit;
+ CEdit m_spacingEdit;
+ CEdit m_marginRightEdit;
CStatic m_optionsGroupBox;
- CEdit m_optionEdits[3];
- CStatic m_optionLabels[3];
+
+ ATL::CWindow m_optionItems[8];
};
-static const int DEFAULT_IF_INSTANCES_CNT = 1;
-static const float DEFAULT_IF_MARGIN_SIDE = 1.0f;
-static const float DEFAULT_IF_MARGIN_TOP = 1.0f;
-static const float DEFAULT_IF_INSTANCES_HEIGHT = 2.0f;
+static const int DEFAULT_IF_INSTANCES_CNT = 2;
+static const int DEFAULT_IF_SPACING_SWITCH = true;
+static const float DEFAULT_IF_SPACING = 30.0f;
+static const float DEFAULT_IF_MARGIN_LEFT = 20.0f;
+static const float DEFAULT_IF_MARGIN_RIGHT = 20.0f;
+static const float DEFAULT_IF_MARGIN_TOP = 20.0f;
static const bool DEFAULT_IF_OPTIONS_VISIBLE = false;
// $Id$
Modified: trunk/src/view/visio/addon/resource.h
===================================================================
--- trunk/src/view/visio/addon/resource.h 2010-03-14 23:34:18 UTC (rev 699)
+++ trunk/src/view/visio/addon/resource.h 2010-03-15 13:25:25 UTC (rev 700)
@@ -38,6 +38,12 @@
#define IDC_IF_LBL1 229
#define IDC_IF_LBL2 230
#define IDC_IF_LBL3 231
+#define IDC_IF_SPACING_SWITCH 232
+#define IDC_IF_SPACING 233
+#define IDC_IF_MARGIN_LEFT 236
+#define IDC_IF_MARGIN_RIGHT 237
+#define IDC_IF_LBL4 239
+#define IDC_IF_LBL5 240
// Next default values for new objects
//
@@ -45,7 +51,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 220
#define _APS_NEXT_COMMAND_VALUE 32768
-#define _APS_NEXT_CONTROL_VALUE 232
+#define _APS_NEXT_CONTROL_VALUE 241
#define _APS_NEXT_SYMED_VALUE 105
#endif
#endif
Modified: trunk/src/view/visio/addon/visualize.h
===================================================================
--- trunk/src/view/visio/addon/visualize.h 2010-03-14 23:34:18 UTC (rev 699)
+++ trunk/src/view/visio/addon/visualize.h 2010-03-15 13:25:25 UTC (rev 700)
@@ -92,7 +92,10 @@
// note: insertion to m_printing must not invalidate iterators
std::list<MscPtr> m_printing;
+// FIXME: changed to public
+public:
void visualize_bmsc(Visio::IVPagePtr vsoPage, const BMscPtr& bmsc);
+protected:
typedef std::map<HMscNodePtr,Visio::IVShapePtr> NodePtrMap;
Visio::IVShapePtr drop_hmsc_node(Visio::IVPagePtr vsoPage, NodePtrMap& nodes, HMscNodePtr node);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|