1 // CDimensionDlg.cpp : implementation file
6 #include "DimensionDlg.h"
7 #include "LengthParamsEdgePage.h"
8 #include "LengthParamsVerticesPage.h"
9 #include "LengthParamsEdgesPage.h"
10 #include "AngleParamsVerticesPage.h"
11 #include "RadiusParamsPage.h"
12 #include "ParamsFacesPage.h"
13 #include <Standard_Macro.hxx>
14 #include <TColStd_ListIteratorOfListOfInteger.hxx>
15 #include <TColStd_ListOfInteger.hxx>
16 #include <AIS_LocalContext.hxx>
17 #include <Quantity_Color.hxx>
19 BEGIN_MESSAGE_MAP(CDimensionDlg, CDialog)
20 ON_BN_CLICKED(IDOK, &CDimensionDlg::OnBnClickedOk)
21 ON_BN_CLICKED(IDC_DimLength, &CDimensionDlg::OnBnClickedDimLength)
22 ON_BN_CLICKED(IDC_DimAngle, &CDimensionDlg::OnBnClickedDimAngle)
23 ON_BN_CLICKED(IDC_DimRadius, &CDimensionDlg::OnBnClickedDimRadius)
24 ON_NOTIFY(TCN_SELCHANGE, IDC_LengthTab, &CDimensionDlg::OnTcnSelChangeLengthTab)
25 ON_NOTIFY(TCN_SELCHANGING, IDC_LengthTab, &CDimensionDlg::OnTcnSelChangingLengthTab)
27 ON_NOTIFY(TCN_SELCHANGE, IDC_AngleTab, &CDimensionDlg::OnTcnSelChangeAngleTab)
28 ON_NOTIFY(TCN_SELCHANGING, IDC_AngleTab, &CDimensionDlg::OnTcnSelChangingAngleTab)
29 ON_BN_CLICKED(IDC_DimDiameter, &CDimensionDlg::OnBnClickedDimDiameter)
30 ON_BN_CLICKED(IDC_2DText, &CDimensionDlg::OnBnClicked2dText)
31 ON_BN_CLICKED(IDC_3DText, &CDimensionDlg::OnBnClicked3dText)
32 ON_BN_CLICKED(IDC_DimensionColor, &CDimensionDlg::OnBnClickedDimensionColor)
36 //=======================================================================
37 //function : CDimensionDlg
39 //=======================================================================
41 CDimensionDlg::CDimensionDlg(CWnd* pParent /*=NULL*/)
42 : CDialog(CDimensionDlg::IDD, pParent),
45 myDimensionColor (Quantity_NOC_LAWNGREEN)
49 //=======================================================================
50 //function : CDimensionDlg
52 //=======================================================================
54 CDimensionDlg::CDimensionDlg (Handle(AIS_InteractiveContext) &theAISContext,
56 : CDialog(CDimensionDlg::IDD, pParent),
59 myDimensionColor (Quantity_NOC_LAWNGREEN)
61 myAISContext = theAISContext;
64 //=======================================================================
65 //function : ~CDimensionDlg
67 //=======================================================================
69 CDimensionDlg::~CDimensionDlg()
73 //=======================================================================
74 //function : SetContext
76 //=======================================================================
78 void CDimensionDlg::SetContext (const Handle(AIS_InteractiveContext) theContext)
80 myAISContext = theContext;
83 //=======================================================================
84 //function : OnInitDialog
85 //purpose : Initialization of dialog fields and parameters
86 //=======================================================================
88 BOOL CDimensionDlg::OnInitDialog()
90 CDialog::OnInitDialog();
92 myLengthParams = (CTabCtrl*) GetDlgItem (IDC_LengthTab);
93 myAngleParams = (CTabCtrl*) GetDlgItem (IDC_AngleTab);
94 myRadiusParams = (CTabCtrl*) GetDlgItem (IDC_RadiusTab);
95 myDiameterParams = (CTabCtrl*) GetDlgItem (IDC_DiameterTab);
97 CreateLengthParamsTab();
98 CreateAngleParamsTab();
99 CreateRadiusParamsTab();
100 CreateDiameterParamsTab( );
102 myLengthParams->ShowWindow (SW_SHOW);
103 myAngleParams->ShowWindow (SW_HIDE);
104 myRadiusParams->ShowWindow (SW_HIDE);
105 myDiameterParams->ShowWindow (SW_HIDE);
107 // Setting default values
108 ((CSliderCtrl*)GetDlgItem(IDC_Flyout))->SetRange (-30,30,true);
109 ((CSliderCtrl*)GetDlgItem(IDC_Flyout))->SetPos (15);
110 UpdateUnitsListForLength ();
111 ((CComboBox*)GetDlgItem (IDC_DisplayUnits))->SetCurSel (1);
112 CheckRadioButton (IDC_2DText, IDC_3DText, IDC_2DText);
113 SetTextModeControlsVisible (false);
114 CComboBox* aCombo =(CComboBox* )GetDlgItem (IDC_FontSize);
115 aCombo->SelectString (0, L"10");
119 return TRUE; // return TRUE unless you set the focus to a control
120 // EXCEPTION: OCX Property Pages should return FALSE
123 //=======================================================================
124 //function : DoDataExchange
125 //purpose : Updating of dialog data if it's needed
126 //=======================================================================
128 void CDimensionDlg::DoDataExchange (CDataExchange* pDX)
130 CDialog::DoDataExchange (pDX);
132 DDX_Radio (pDX, IDC_DimLength, mySelectedDimType);
135 //=======================================================================
136 //function : OnBnClickedOk
137 //purpose : Reset all local contexts and close the dimension dialog
138 //=======================================================================
140 void CDimensionDlg::OnBnClickedOk()
145 //=======================================================================
146 //function : GetFlyout
147 //purpose : Only for length dimensions! Gets flyout value
148 //=======================================================================
150 const Standard_Real CDimensionDlg::GetFlyout() const
152 return ((CSliderCtrl*)GetDlgItem(IDC_Flyout))->GetPos();
155 //=======================================================================
156 //function : CreateLengthParamsTab
157 //purpose : Fill tab control for length dimensions
158 //=======================================================================
160 void CDimensionDlg::CreateLengthParamsTab()
163 aTabItem.mask = TCIF_TEXT;
164 aTabItem.pszText = L"Edge";
165 myLengthParams->InsertItem (0, &aTabItem);
166 aTabItem.pszText = L"Vertices";
167 myLengthParams->InsertItem (1, &aTabItem);
168 aTabItem.pszText = L"Parallel edges";
169 myLengthParams->InsertItem (2, &aTabItem);
170 aTabItem.pszText = L"Parallel faces";
171 myLengthParams->InsertItem (3, &aTabItem);
173 CLengthParamsEdgePage *aPage1 = new CLengthParamsEdgePage (myAISContext);
174 aTabItem.mask = TCIF_PARAM;
175 aTabItem.lParam = (LPARAM)aPage1;
176 myLengthParams->SetItem (0, &aTabItem);
177 VERIFY (aPage1->Create (CLengthParamsEdgePage::IDD,myLengthParams));
178 aPage1->SetWindowPos (NULL,10,30,0,0,SWP_NOSIZE | SWP_NOZORDER);
179 aPage1->ShowWindow (SW_SHOW);
181 CLengthParamsVerticesPage *aPage2 = new CLengthParamsVerticesPage (myAISContext);
182 aTabItem.mask = TCIF_PARAM;
183 aTabItem.lParam = (LPARAM)aPage2;
184 myLengthParams->SetItem (1, &aTabItem);
185 VERIFY (aPage2->Create (CLengthParamsVerticesPage::IDD,myLengthParams));
186 aPage2->SetWindowPos (NULL,10,30,0,0,SWP_NOSIZE | SWP_NOZORDER);
187 aPage2->ShowWindow (SW_HIDE);
189 CLengthParamsEdgesPage *aPage3 = new CLengthParamsEdgesPage (myAISContext);
190 aTabItem.mask = TCIF_PARAM;
191 aTabItem.lParam = (LPARAM)aPage3;
192 myLengthParams->SetItem (2, &aTabItem);
193 VERIFY (aPage3->Create (CLengthParamsEdgesPage::IDD,myLengthParams));
194 aPage3->SetWindowPos (NULL,10,30,0,0,SWP_NOSIZE | SWP_NOZORDER);
195 aPage3->ShowWindow (SW_HIDE);
197 CParamsFacesPage *aPage4 = new CParamsFacesPage (myAISContext);
198 aTabItem.mask = TCIF_PARAM;
199 aTabItem.lParam = (LPARAM)aPage4;
200 myLengthParams->SetItem (3, &aTabItem);
201 VERIFY (aPage4->Create (CParamsFacesPage::IDD,myLengthParams));
202 aPage4->SetWindowPos (NULL,10,30,0,0,SWP_NOSIZE | SWP_NOZORDER);
203 aPage4->ShowWindow (SW_HIDE);
206 //=======================================================================
207 //function : CreateAngleParamsTab
208 //purpose : Fill tab control for angle dimensions
209 //=======================================================================
211 void CDimensionDlg::CreateAngleParamsTab()
214 aTabItem.mask = TCIF_TEXT;
215 aTabItem.pszText = L"Two edges";
216 myAngleParams->InsertItem (0, &aTabItem);
217 aTabItem.pszText = L"Three vertices";
218 myAngleParams->InsertItem (1, &aTabItem);
219 aTabItem.pszText = L"Two faces";
220 myAngleParams->InsertItem (2, &aTabItem);
222 CLengthParamsEdgesPage *aPage1 = new CLengthParamsEdgesPage (myAISContext, true);
223 aTabItem.mask = TCIF_PARAM;
224 aTabItem.lParam = (LPARAM)aPage1;
225 myAngleParams->SetItem (0, &aTabItem);
226 VERIFY (aPage1->Create (CLengthParamsEdgesPage::IDD,myAngleParams));
227 aPage1->SetWindowPos (NULL,10,30,0,0,SWP_NOSIZE | SWP_NOZORDER);
228 aPage1->ShowWindow (SW_SHOW);
230 CAngleParamsVerticesPage *aPage2 = new CAngleParamsVerticesPage (myAISContext);
231 aTabItem.mask = TCIF_PARAM;
232 aTabItem.lParam = (LPARAM)aPage2;
233 myAngleParams->SetItem (1, &aTabItem);
234 VERIFY (aPage2->Create (CAngleParamsVerticesPage::IDD,myAngleParams));
235 aPage2->SetWindowPos (NULL,10,30,0,0,SWP_NOSIZE | SWP_NOZORDER);
236 aPage2->ShowWindow (SW_HIDE);
238 CParamsFacesPage *aPage3 = new CParamsFacesPage (myAISContext, true);
239 aTabItem.mask = TCIF_PARAM;
240 aTabItem.lParam = (LPARAM)aPage3;
241 myAngleParams->SetItem (2, &aTabItem);
242 VERIFY (aPage3->Create (CParamsFacesPage::IDD,myAngleParams));
243 aPage3->SetWindowPos (NULL,10,30,0,0,SWP_NOSIZE | SWP_NOZORDER);
244 aPage3->ShowWindow (SW_HIDE);
247 //=======================================================================
248 //function : CreateRadiusParamsTab
249 //purpose : Fill tab control for radius dimensions
250 //=======================================================================
252 void CDimensionDlg::CreateRadiusParamsTab()
255 aTabItem.mask = TCIF_TEXT;
256 aTabItem.pszText = L"Circle or arc";
257 myRadiusParams->InsertItem (0, &aTabItem);
258 CRadiusParamsPage *aPage1 = new CRadiusParamsPage (myAISContext);
259 aTabItem.mask = TCIF_PARAM;
260 aTabItem.lParam = (LPARAM)aPage1;
261 myRadiusParams->SetItem (0, &aTabItem);
262 VERIFY (aPage1->Create (CRadiusParamsPage::IDD,myRadiusParams));
263 aPage1->SetWindowPos (NULL,10,30,0,0,SWP_NOSIZE | SWP_NOZORDER);
264 aPage1->ShowWindow (SW_SHOW);
267 //=======================================================================
268 //function : CreateDiameterParamsTab
269 //purpose : Fill tab control for diameter dimensions
270 //=======================================================================
272 void CDimensionDlg::CreateDiameterParamsTab()
275 aTabItem.mask = TCIF_TEXT;
276 aTabItem.pszText = L"Circle or arc";
277 myDiameterParams->InsertItem (0, &aTabItem);
278 CRadiusParamsPage *aPage1 = new CRadiusParamsPage (myAISContext,Standard_True);
279 aTabItem.mask = TCIF_PARAM;
280 aTabItem.lParam = (LPARAM)aPage1;
281 myRadiusParams->SetItem (0, &aTabItem);
282 VERIFY (aPage1->Create (CRadiusParamsPage::IDD,myDiameterParams));
283 aPage1->SetWindowPos (NULL,10,30,0,0,SWP_NOSIZE | SWP_NOZORDER);
284 aPage1->ShowWindow (SW_SHOW);
287 //=======================================================================
288 //function : UpdateStandardModeForAngle
290 //=======================================================================
292 void CDimensionDlg::UpdateStandardModeForAngle()
294 int aTabNum = ((CTabCtrl*) GetDlgItem (IDC_AngleTab))->GetCurSel();
295 TopAbs_ShapeEnum aMode;
299 aMode = TopAbs_VERTEX;
301 else if (aTabNum == 2)
310 myAISContext->Activate (AIS_Shape::SelectionMode (aMode));
313 //=======================================================================
314 //function : UpdateStandardModeForLength
316 //=======================================================================
318 void CDimensionDlg::UpdateStandardModeForLength()
320 int aTabNum = ((CTabCtrl*) GetDlgItem (IDC_LengthTab))->GetCurSel();
322 TopAbs_ShapeEnum aMode;
326 aMode = TopAbs_VERTEX;
328 else if (aTabNum == 3)
336 myAISContext->Activate (AIS_Shape::SelectionMode (aMode));
339 //=======================================================================
340 //function : UpdateStandardModeForLength
342 //=======================================================================
344 void CDimensionDlg::UpdateStandardMode()
346 int aCurIndex = GetCheckedRadioButton (IDC_DimLength, IDC_DimDiameter);
350 UpdateStandardModeForLength();
353 UpdateStandardModeForAngle();
356 case IDC_DimDiameter:
358 myAISContext->Activate (AIS_Shape::SelectionMode (TopAbs_EDGE));
364 //=======================================================================
365 //function : OnBnClickedDimLength
366 //purpose : it is called when <Length> radio button is chosen
367 //=======================================================================
369 void CDimensionDlg::OnBnClickedDimLength()
372 UpdateStandardModeForLength ();
373 GetDlgItem (IDC_LengthTab)->ShowWindow (SW_SHOW);
374 GetDlgItem (IDC_AngleTab)->ShowWindow (SW_HIDE);
375 GetDlgItem (IDC_RadiusTab)->ShowWindow (SW_HIDE);
376 GetDlgItem (IDC_DiameterTab)->ShowWindow (SW_HIDE);
378 UpdateUnitsListForLength ();
379 ((CSliderCtrl*)GetDlgItem(IDC_Flyout))->SetPos (15);
382 //=======================================================================
383 //function : OnBnClickedDimAngle
384 //purpose : it is called when <Angle> radio button is chosen
385 //=======================================================================
387 void CDimensionDlg::OnBnClickedDimAngle()
390 UpdateStandardModeForAngle();
391 GetDlgItem (IDC_LengthTab)->ShowWindow (SW_HIDE);
392 GetDlgItem (IDC_AngleTab)->ShowWindow (SW_SHOW);
393 GetDlgItem (IDC_RadiusTab)->ShowWindow (SW_HIDE);
394 GetDlgItem (IDC_DiameterTab)->ShowWindow (SW_HIDE);
396 UpdateUnitsListForAngle();
397 ((CSliderCtrl*)GetDlgItem(IDC_Flyout))->SetPos (15);
400 //=======================================================================
401 //function : OnBnClickedDimDiameter
402 //purpose : it is called when <Diameter> radio button is chosen
403 //=======================================================================
405 void CDimensionDlg::OnBnClickedDimDiameter()
408 myAISContext->Activate (AIS_Shape::SelectionMode (TopAbs_EDGE));
410 GetDlgItem (IDC_LengthTab)->ShowWindow (SW_HIDE);
411 GetDlgItem (IDC_AngleTab)->ShowWindow (SW_HIDE);
412 GetDlgItem (IDC_RadiusTab)->ShowWindow (SW_HIDE);
413 GetDlgItem (IDC_DiameterTab)->ShowWindow (SW_SHOW);
415 UpdateUnitsListForLength();
416 ((CSliderCtrl*)GetDlgItem(IDC_Flyout))->SetPos (0);
419 //=======================================================================
420 //function : OnBnClickedDimRadius
421 //purpose : it is called when <Radius> radio button is chosen
422 //=======================================================================
424 void CDimensionDlg::OnBnClickedDimRadius()
427 myAISContext->Activate (AIS_Shape::SelectionMode (TopAbs_EDGE));
428 GetDlgItem (IDC_LengthTab)->ShowWindow (SW_HIDE);
429 GetDlgItem (IDC_AngleTab)->ShowWindow (SW_HIDE);
430 GetDlgItem (IDC_RadiusTab)->ShowWindow (SW_SHOW);
431 GetDlgItem (IDC_DiameterTab)->ShowWindow (SW_HIDE);
433 UpdateUnitsListForLength();
434 ((CSliderCtrl*)GetDlgItem(IDC_Flyout))->SetPos (0);
437 //=======================================================================
438 //function : OnTcnSelChangeLengthTab
439 //purpose : it is called when in Length tab control current tab was changed
440 //=======================================================================
442 void CDimensionDlg::OnTcnSelChangeLengthTab (NMHDR * /*pNMHDR*/, LRESULT *pResult)
444 // Show this chosen tab page
445 int aTabNum = ((CTabCtrl*) GetDlgItem (IDC_LengthTab))->GetCurSel();
447 anItem.mask = TCIF_PARAM;
448 ((CTabCtrl*) GetDlgItem (IDC_LengthTab))->GetItem (aTabNum, &anItem);
449 ASSERT(anItem.lParam);
450 CWnd *aWnd = (CWnd*)anItem.lParam;
451 aWnd->ShowWindow (SW_SHOW);
452 UpdateStandardModeForLength();
456 //=======================================================================
457 //function : OnTcnSelChangingLengthTab
458 //purpose : it is called when in Length tab control current tab
460 // It is used to hide the current tab here to prevent collisions.
461 //=======================================================================
463 void CDimensionDlg::OnTcnSelChangingLengthTab (NMHDR * /*pNMHDR*/, LRESULT *pResult)
465 // Hide current tab page
466 int aTabNum = ((CTabCtrl*) GetDlgItem (IDC_LengthTab))->GetCurSel();
468 anItem.mask = TCIF_PARAM;
469 ((CTabCtrl*) GetDlgItem (IDC_LengthTab))->GetItem (aTabNum, &anItem);
470 ASSERT (anItem.lParam);
471 CWnd *aWnd = (CWnd*)anItem.lParam;
472 aWnd->ShowWindow (SW_HIDE);
476 //=======================================================================
477 //function : OnTcnSelChangeAngleTab
478 //purpose : it is called when in Angle tab control current tab was changed
479 //=======================================================================
481 void CDimensionDlg::OnTcnSelChangeAngleTab (NMHDR * /*pNMHDR*/, LRESULT *pResult)
483 int aTabNum = ((CTabCtrl*) GetDlgItem (IDC_AngleTab))->GetCurSel();
485 anItem.mask = TCIF_PARAM;
486 ((CTabCtrl*) GetDlgItem (IDC_AngleTab))->GetItem (aTabNum, &anItem);
487 ASSERT (anItem.lParam);
488 CWnd *aWnd = (CWnd*)anItem.lParam;
489 aWnd->ShowWindow (SW_SHOW);
490 UpdateStandardModeForAngle();
494 //=======================================================================
495 //function : OnTcnSelChangingAngleTab
496 //purpose : it is called when in Angle tab control current tab
498 // It is used to hide the current tab here to prevent collisions.
499 //=======================================================================
501 void CDimensionDlg::OnTcnSelChangingAngleTab (NMHDR * /*pNMHDR*/, LRESULT *pResult)
503 int aTabNum = ((CTabCtrl*) GetDlgItem (IDC_AngleTab))->GetCurSel();
505 anItem.mask = TCIF_PARAM;
506 ((CTabCtrl*) GetDlgItem (IDC_AngleTab))->GetItem (aTabNum, &anItem);
507 ASSERT (anItem.lParam);
508 CWnd *aWnd = (CWnd*)anItem.lParam;
509 aWnd->ShowWindow (SW_HIDE);
513 //=======================================================================
514 //function : DeactivateAllStandardModes
516 //=======================================================================
518 void CDimensionDlg::DeactivateAllStandardModes()
520 myAISContext->Deactivate();
523 //=======================================================================
524 //function : OnDestroy
526 //=======================================================================
528 void CDimensionDlg::OnDestroy()
532 anItem.mask = TCIF_PARAM;
534 // Destroy length tab
535 for (int i = 3; i >= 0; --i)
537 ((CTabCtrl*) GetDlgItem (IDC_LengthTab))->GetItem (i, &anItem);
538 ASSERT (anItem.lParam);
539 aWnd = (CWnd*) anItem.lParam;
540 aWnd->DestroyWindow();
544 for (int i = 2; i >= 0; --i)
546 ((CTabCtrl*) GetDlgItem (IDC_AngleTab))->GetItem (i, &anItem);
547 ASSERT(anItem.lParam);
548 aWnd = (CWnd*) anItem.lParam;
549 aWnd->DestroyWindow();
553 // Destroy radius tab
554 ((CTabCtrl*) GetDlgItem (IDC_RadiusTab))->GetItem (0, &anItem);
555 ASSERT(anItem.lParam);
556 aWnd = (CWnd*) anItem.lParam;
557 aWnd->DestroyWindow();
560 // Destroy diameter tab
561 ((CTabCtrl*) GetDlgItem (IDC_DiameterTab))->GetItem (0, &anItem);
562 ASSERT(anItem.lParam);
563 aWnd = (CWnd*) anItem.lParam;
564 aWnd->DestroyWindow();
567 CDialog::OnDestroy();
570 //=======================================================================
571 //function : GetTextType
572 //purpose : Returns true if 3d text is to be used
573 // and false in the case of 2d text.
574 //=======================================================================
576 const Standard_Boolean CDimensionDlg::GetTextType() const
578 CButton* a3DButton = (CButton*)GetDlgItem (IDC_3DText);
579 return a3DButton->GetCheck() != 0;
582 //=======================================================================
583 //function : GetFontHeight
584 //purpose : Returns font height
585 //=======================================================================
587 const Standard_Real CDimensionDlg::GetFontHeight() const
589 CComboBox *aComboBox = (CComboBox*)GetDlgItem (IDC_FontSize);
591 aComboBox->GetWindowText (aStr);
595 //=======================================================================
596 //function : IsText3dShaded
597 //purpose : Only for 3d text; returns true if shaded 3d text is to be used
598 //=======================================================================
600 const Standard_Boolean CDimensionDlg::IsText3dShaded() const
602 CComboBox *aComboBox = (CComboBox*)GetDlgItem (IDC_TextDisplayMode);
603 int aCurIndex = aComboBox->GetCurSel();
604 return aCurIndex == 0 ? Standard_False : Standard_True;
607 //=======================================================================
608 //function : SetTextModeControlsVisible
609 //purpose : for the dialog updating
610 //=======================================================================
612 void CDimensionDlg::SetTextModeControlsVisible (bool isVisible)
614 GetDlgItem (IDC_TextDisplayMode)->ShowWindow (isVisible ? SW_SHOW : SW_HIDE);
615 GetDlgItem (IDC_TextDisplayModeStatic)->ShowWindow (isVisible ? SW_SHOW : SW_HIDE);
618 //=======================================================================
619 //function : OnBnClicked2dText
620 //purpose : for the dialog updating when 2d text radio button was chosen
621 //=======================================================================
623 void CDimensionDlg::OnBnClicked2dText()
625 SetTextModeControlsVisible (false);
628 //=======================================================================
629 //function : OnBnClicked3dText
630 //purpose : for the dialog updating when 3d text radio button was chosen
631 //=======================================================================
633 void CDimensionDlg::OnBnClicked3dText()
635 SetTextModeControlsVisible (true);
638 //=======================================================================
639 //function : UpdateUnitsListForLength
640 //purpose : for the dialog updating when 3d text radio button was chosen
641 //=======================================================================
643 void CDimensionDlg::UpdateUnitsListForLength()
645 CComboBox *aCombo = (CComboBox*)GetDlgItem (IDC_DisplayUnits);
646 aCombo->ResetContent();
647 aCombo->AddString (L"No");
648 aCombo->AddString (L"m");
649 aCombo->AddString (L"mm");
650 aCombo->AddString (L"in");
651 aCombo->SetCurSel (1);
654 //=======================================================================
655 //function : UpdateUnitsListForAngle
656 //purpose : for the dialog updating when 3d text radio button was chosen
657 //=======================================================================
659 void CDimensionDlg::UpdateUnitsListForAngle()
661 CComboBox *aCombo = (CComboBox*)GetDlgItem (IDC_DisplayUnits);
662 aCombo->ResetContent();
663 aCombo->AddString (L"No");
664 aCombo->AddString (L"deg");
665 aCombo->AddString (L"rad");
666 aCombo->SetCurSel (1);
669 //=======================================================================
670 //function : IsUnitsDisplayed
671 //purpose : returns true if the units is to be displayed
672 //=======================================================================
674 const Standard_Boolean CDimensionDlg::IsUnitsDisplayed() const
677 GetDlgItem (IDC_DisplayUnits)->GetWindowText (aStr);
678 return !aStr.IsEmpty() && aStr != "No";
681 //=======================================================================
682 //function : GetUnits
683 //purpose : returns display quantity units for current dimension
684 //=======================================================================
686 const TCollection_AsciiString CDimensionDlg::GetUnits() const
688 if (!IsUnitsDisplayed())
689 return TCollection_AsciiString();
691 GetDlgItem (IDC_DisplayUnits)->GetWindowText (aStr);
692 return TCollection_AsciiString ((const wchar_t* )aStr);
695 //=======================================================================
696 //function : OnBnClickedDimensionColor
697 //purpose : returns display quantity units for current dimension
698 //=======================================================================
700 void CDimensionDlg::OnBnClickedDimensionColor()
705 myDimensionColor.Values (aR,aG,aB, Quantity_TOC_RGB);
706 COLORREF aColor = RGB (aR*255, aG*255, aB*255);
708 CColorDialog aDlgColor (aColor);
709 if (aDlgColor.DoModal() == IDOK)
711 aColor = aDlgColor.GetColor();
712 aR = GetRValue(aColor) / 255.0;
713 aG = GetGValue(aColor) / 255.0;
714 aB = GetBValue(aColor) / 255.0;
715 myDimensionColor = Quantity_Color (aR, aG, aB, Quantity_TOC_RGB);
719 //=======================================================================
720 //function : GetDimensionColor
721 //purpose : returns current dimension color
722 //=======================================================================
724 const Quantity_Color CDimensionDlg::GetDimensionColor() const
726 return myDimensionColor;
729 void CDimensionDlg::OnClose()