diff --git a/EgtStone3D.vbproj b/EgtStone3D.vbproj
index c042926..41f48fe 100644
--- a/EgtStone3D.vbproj
+++ b/EgtStone3D.vbproj
@@ -115,17 +115,11 @@
OptionWindowV.xaml
-
- PairV.xaml
- ProjManagerV.xaml
-
- RotateV.xaml
- SceneButtonV.xaml
@@ -186,18 +180,10 @@
DesignerMSBuild:Compile
-
- Designer
- MSBuild:Compile
- DesignerMSBuild:Compile
-
- Designer
- MSBuild:Compile
- DesignerMSBuild:Compile
diff --git a/Move/MoveVM.vb b/Move/MoveVM.vb
index 1344fb0..fb11f55 100644
--- a/Move/MoveVM.vb
+++ b/Move/MoveVM.vb
@@ -17,10 +17,10 @@ Public Class MoveVM
Public Overrides Sub LoadParamList()
Title = EgtMsg(110018).ToUpper()
- ParamList.Add(New _TextBlockParam("Messaggio", EgtMsg(110005)))
- ParamList.Add(New _TextBoxParam("X", "0"))
- ParamList.Add(New _TextBoxParam("Y", "0"))
- ParamList.Add(New _TextBoxParam("Z", "0"))
+ ParamList.Add(New _TextBlockParam("Messaggio", EgtMsg(110005), Visibility.Visible))
+ ParamList.Add(New _TextBoxParam("X", "0", Visibility.Visible))
+ ParamList.Add(New _TextBoxParam("Y", "0", Visibility.Visible))
+ ParamList.Add(New _TextBoxParam("Z", "0", Visibility.Visible))
End Sub
Public Overrides Sub Conferma()
@@ -101,27 +101,31 @@ Public Class MoveVM
End Sub
Public Overrides Sub ShowPreview()
- If Map.refSceneHostV.m_bPreviewShown = False Then
- Dim Btn As SceneBtn = DirectCast(Map.refSceneButtonV.DataContext, SceneButtonVM).GetButton(EGT_MOVE)
- If TypeOf (Btn) Is _ToggleButton Then
- If Not DirectCast(Btn, _ToggleButton).IsChecked Then Return
- Else
- EgtOutLog("CONFIG ERR: Il pulsante di Move è stato definito come Button anziché ToggleButton")
- Return
- End If
+ Dim Btn As SceneBtn = DirectCast(Map.refSceneButtonV.DataContext, SceneButtonVM).GetButton(EGT_MOVE)
+ If TypeOf (Btn) Is _ToggleButton Then
+ If Not DirectCast(Btn, _ToggleButton).IsChecked Then Return
+ Else
+ EgtOutLog("CONFIG ERR: Il pulsante di Move è stato definito come Button anziché ToggleButton")
+ Return
+ End If
- Dim x_TextBox As _TextBoxParam = DirectCast(ParamList(1), _TextBoxParam)
- Dim y_TextBox As _TextBoxParam = DirectCast(ParamList(2), _TextBoxParam)
- Dim z_TextBox As _TextBoxParam = DirectCast(ParamList(3), _TextBoxParam)
+ Dim x_TextBox As _TextBoxParam = DirectCast(ParamList(1), _TextBoxParam)
+ Dim y_TextBox As _TextBoxParam = DirectCast(ParamList(2), _TextBoxParam)
+ Dim z_TextBox As _TextBoxParam = DirectCast(ParamList(3), _TextBoxParam)
- ' leggo i dati del vettore di movimento dalle TextBox in m_MoveUC
- If Map.refSceneHostV.m_bPreviewShown Then Return
- If String.IsNullOrEmpty(x_TextBox.Value) Then x_TextBox.Value = "0"
- If String.IsNullOrEmpty(y_TextBox.Value) Then y_TextBox.Value = "0"
- If String.IsNullOrEmpty(z_TextBox.Value) Then z_TextBox.Value = "0"
- Dim vtMove As New Vector3d(CDbl(x_TextBox.Value),
+ ' leggo i dati del vettore di movimento dalle TextBox in m_MoveUC
+ If String.IsNullOrEmpty(x_TextBox.Value) Then x_TextBox.Value = "0"
+ If String.IsNullOrEmpty(y_TextBox.Value) Then y_TextBox.Value = "0"
+ If String.IsNullOrEmpty(z_TextBox.Value) Then z_TextBox.Value = "0"
+ Dim vtMove As New Vector3d(CDbl(x_TextBox.Value),
CDbl(y_TextBox.Value),
CDbl(z_TextBox.Value))
+ If Map.refSceneHostV.m_nIdPart <> GDB_ID.NULL And Not AreSameVectorExact(vtMove, New Vector3d) Then
+ If Map.refSceneHostV.m_bPreviewShown = True Then
+ ' resetto il movimento precedente
+ If EgtLuaCallFunction("ASS.UndoTemp") Then AssLog("ASS.UndoTemp()")
+ End If
+
'''' eventuale gestione di un'opzione 'All Selected
'If Not AllOption_Move.IsChecked And m_nIdPart <> -1 Then
' Dim PartSolidSelected As PartSolid = GetPartSolid(m_nIdPart)
@@ -136,11 +140,7 @@ Public Class MoveVM
' Next
'End If
- If Map.refSceneHostV.m_nIdPart <> GDB_ID.NULL And Not AreSameVectorExact(vtMove, New Vector3d) Then
- SolidManagerM.Move(Map.refSceneHostV.m_nIdPart, vtMove, False, True)
- Else
- Annulla()
- End If
+ SolidManagerM.Move(Map.refSceneHostV.m_nIdPart, vtMove, False, True)
Map.refSceneHostV.m_bPreviewShown = True
EgtDraw()
diff --git a/Pair/PairV.xaml b/Pair/PairV.xaml
deleted file mode 100644
index 14f488f..0000000
--- a/Pair/PairV.xaml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Pair/PairV.xaml.vb b/Pair/PairV.xaml.vb
deleted file mode 100644
index 1f348ba..0000000
--- a/Pair/PairV.xaml.vb
+++ /dev/null
@@ -1,44 +0,0 @@
-Imports EgtUILib
-
-Public Class PairV
-
-#Region "FIELDS & PROPERTIES"
-
- Private m_PairVM As PairVM
-
-#End Region ' Fields & Properties
-
-#Region "CONSTRUCTOR"
-
- Sub New()
-
- ' La chiamata è richiesta dalla finestra di progettazione.
- InitializeComponent()
-
- ' Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent().
- m_PairVM = New PairVM
- Me.DataContext = m_PairVM
-
- PairOption.ItemsSource = New List(Of String)({"Start-Start", "Start-End", "End-Start", "End-End", "Middle-Middle"})
- PairOption.SelectedIndex = 1
-
- 'comincio a contare le operazioni temporanee per poterle poi salvare nella eventualmente nella storia
- Map.refSceneHostV.m_nTransfNum = 0
- ' setto le variabili di salvataggio per le operazioni temporanee
- Dim bSave As Boolean = False
- If EgtLuaSetGlobBoolVar("ASS.bSaveHist", bSave) Then AssLog("ASS.bSaveHist = " & bSave.ToString)
- Dim bSaveTemp As Boolean = True
- If EgtLuaSetGlobBoolVar("ASS.bSaveTemp", bSaveTemp) Then AssLog("ASS.bSaveTemp = " & bSaveTemp.ToString)
- End Sub
-
-#End Region ' Constructor
-
-#Region "EVENTS"
-
- Private Sub PairOption_Changed() Handles PairOption.SelectionChanged, FlipOption1.Click, FlipOption2.Click
- If Not IsNothing(Map.refSceneButtonV.m_PairUC) Then m_PairVM.PairPartsAgain()
- End Sub
-
-#End Region ' Events
-
-End Class
diff --git a/Pair/PairVM.vb b/Pair/PairVM.vb
index 2b851a0..14e72a8 100644
--- a/Pair/PairVM.vb
+++ b/Pair/PairVM.vb
@@ -3,18 +3,12 @@ Imports EgtUILib
Imports EgtWPFLib5
Public Class PairVM
- Inherits VMBase
+ Inherits SceneUserControlVM
#Region "FIELDS & PROPERTIES"
#Region "Messages"
- Public ReadOnly Property TopBar_Msg As String
- Get
- Return EgtMsg(110000)
- End Get
- End Property
-
Public ReadOnly Property FlipOption1_Msg As String
Get
Return EgtMsg(110001)
@@ -27,53 +21,64 @@ Public Class PairVM
End Get
End Property
- Public ReadOnly Property Conferma_Msg As String
- Get
- Return EgtMsg(110003)
- End Get
- End Property
-
- Public ReadOnly Property Annulla_Msg As String
- Get
- Return EgtMsg(110004)
- End Get
- End Property
-
#End Region ' Messages
-
- Private m_ConfermaCmd As ICommand
- Public ReadOnly Property ConfermaCmd As ICommand
+ Private m_MsgList As New List(Of String)({EgtMsg(110000), EgtMsg(110020), EgtMsg(110021)})
+ Public ReadOnly Property MsgList As List(Of String)
Get
- If m_ConfermaCmd Is Nothing Then
- m_ConfermaCmd = New Command(AddressOf Conferma)
- End If
- Return m_ConfermaCmd
+ Return m_MsgList
End Get
End Property
- Private m_AnnullaCmd As ICommand
- Public ReadOnly Property AnnullaCmd As ICommand
+ Private m_Stage As Integer = 0
+ Private Property Stage As Integer
Get
- If m_AnnullaCmd Is Nothing Then
- m_AnnullaCmd = New Command(AddressOf Annulla)
- End If
- Return m_AnnullaCmd
+ Return m_Stage
End Get
+ Set(value As Integer)
+ m_Stage = value
+ DirectCast(ParamList(0), _TextBlockParam).MsgValue = MsgList(m_Stage)
+ If m_Stage = 2 Then SetAllVisible()
+ End Set
End Property
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
- Sub New()
+ Public Sub New()
+ MyBase.New()
+ 'comincio a contare le operazioni temporanee per poterle poi salvare nella eventualmente nella storia
+ Map.refSceneHostV.m_nTransfNum = 0
+ ' setto le variabili di salvataggio per le operazioni temporanee
+ Dim bSave As Boolean = False
+ If EgtLuaSetGlobBoolVar("ASS.bSaveHist", bSave) Then AssLog("ASS.bSaveHist = " & bSave.ToString)
+ Dim bSaveTemp As Boolean = True
+ If EgtLuaSetGlobBoolVar("ASS.bSaveTemp", bSaveTemp) Then AssLog("ASS.bSaveTemp = " & bSaveTemp.ToString)
+
+ LoadParamList()
End Sub
#End Region ' Constructor
#Region "METHODS"
- Public Sub Conferma()
+ Public Overrides Sub LoadParamList()
+ Title = "Pair".ToUpper()
+ AddGenericParam(New _TextBlockParam("Messaggio", MsgList(0), Visibility.Visible))
+ Dim PairOptionList As New List(Of ParamCmBx)({New ParamCmBx("Start-Start"), New ParamCmBx("Start-End"), New ParamCmBx("End-Start"),
+ New ParamCmBx("End-End"), New ParamCmBx("Middle-Middle")})
+ AddGenericParam(New _ComboBoxParam("PairOption", PairOptionList, 1, Visibility.Collapsed))
+ AddGenericParam(New _CheckBoxParam("FlipOption1", FlipOption1_Msg, Visibility.Collapsed))
+ AddGenericParam(New _CheckBoxParam("FlipOption2", FlipOption2_Msg, Visibility.Collapsed))
+
+ End Sub
+
+ Public Sub AdvanceStage()
+ Stage += 1
+ End Sub
+
+ Public Overrides Sub Conferma()
' salvo la storia delle operazioni svolte durante l'accoppiamento
Dim PartSolidSel As PartSolidM = SolidManagerM.GetPartSolid(Map.refSceneHostV.m_nIdPart)
If IsNothing(PartSolidSel) Then
@@ -109,7 +114,7 @@ NoSecondLine:
Close()
End Sub
- Public Sub Annulla()
+ Public Overrides Sub Annulla()
' faccio il reset del pairing
If Map.refSceneHostV.m_nTransfNum > Map.refSceneHostV.m_MaxTempTime Then
Map.refSceneHostV.m_nTransfNum = Map.refSceneHostV.m_MaxTempTime
@@ -117,6 +122,8 @@ NoSecondLine:
For op As Integer = Map.refSceneHostV.m_nTransfNum To 0 Step -1
If EgtLuaCallFunction("ASS.UndoTemp") Then AssLog("ASS.UndoTemp()")
Next
+ 'resetto eventuali intersezioni
+ SolidManagerM.ResetInters()
' chiudo lo user control
Close()
End Sub
@@ -141,11 +148,30 @@ NoSecondLine:
Map.refSceneButtonV.RemovePairUC()
End Sub
- Public Sub PairPartsAgain()
+ Private Sub SetAllVisible()
+ ParamList(1).nVisibility = Visibility.Visible
+ ParamList(2).nVisibility = Visibility.Visible
+ ParamList(3).nVisibility = Visibility.Visible
+ End Sub
+ Public Overrides Sub OnCheckboxCheckedChanged(sender As Object, checkedState As Boolean)
+ Dim CheckBox As _CheckBoxParam = DirectCast(sender, _CheckBoxParam)
+ Select Case CheckBox.Name
+ Case "FlipOption1"
+ PairParts()
+ Case "FlipOption2"
+ PairParts()
+ End Select
+ End Sub
+
+ Public Overrides Sub OnComboboxSelectionChanged(sender As Object, Selection As ParamCmBx)
+ PairParts()
+ End Sub
+
+ Public Sub PairParts()
Dim nId As Integer = Map.refSceneHostV.m_nIdPart
- Dim nOpInd As Integer = Map.refSceneButtonV.m_PairUC.PairOption.SelectedIndex
- Dim bFlip1 As Boolean = Map.refSceneButtonV.m_PairUC.FlipOption1.IsChecked
- Dim bFlip2 As Boolean = Map.refSceneButtonV.m_PairUC.FlipOption2.IsChecked
+ Dim nOpInd As Integer = DirectCast(ParamList(1), _ComboBoxParam).ParamCmBxList.IndexOf(DirectCast(ParamList(1), _ComboBoxParam).SelParamCmBx)
+ Dim bFlip1 As Boolean = DirectCast(ParamList(2), _CheckBoxParam).IsChecked
+ Dim bFlip2 As Boolean = DirectCast(ParamList(3), _CheckBoxParam).IsChecked
Dim nTransf As Integer = 0
PairPart(nId, nOpInd, bFlip1, bFlip2, Map.refSceneHostV.m_bFlippedParal, Map.refSceneHostV.m_bFlippedPerp, nTransf)
Map.refSceneHostV.m_nTransfNum += nTransf
diff --git a/Rotate/RotateV.xaml b/Rotate/RotateV.xaml
deleted file mode 100644
index b9cdef5..0000000
--- a/Rotate/RotateV.xaml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Rotate/RotateV.xaml.vb b/Rotate/RotateV.xaml.vb
deleted file mode 100644
index 40e6b44..0000000
--- a/Rotate/RotateV.xaml.vb
+++ /dev/null
@@ -1,47 +0,0 @@
-Imports EgtUILib
-
-Public Class RotateV
-
-#Region "FIELDS & PROPERTIES"
-
- Private m_RotateVM As RotateVM
-
-#End Region ' Fields & Properties
-
-#Region "CONSTRUCTOR"
-
- Sub New()
-
- ' La chiamata è richiesta dalla finestra di progettazione.
- InitializeComponent()
- m_RotateVM = New RotateVM
- Me.DataContext = m_RotateVM
-
- ' Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent().
- Dim PartSolidSel As PartSolidM = SolidManagerM.GetPartSolid(Map.refSceneHostV.m_nIdPart)
- If IsNothing(PartSolidSel) Then Return
- PartSolidSel.ShowAxis()
-
- ' setto le variabili di salvataggio per le operazioni temporanee
- Dim bSave As Boolean = False
- If EgtLuaSetGlobBoolVar("ASS.bSaveHist", bSave) Then AssLog("ASS.bSaveHist = " & bSave.ToString)
- Dim bSaveTemp As Boolean = True
- If EgtLuaSetGlobBoolVar("ASS.bSaveTemp", bSaveTemp) Then AssLog("ASS.bSaveTemp = " & bSaveTemp.ToString)
- End Sub
-
-#End Region ' Constructor
-
-#Region "EVENTS"
-
- Private Sub Init() Handles Me.Loaded
- Dim PartSolidSel As PartSolidM = SolidManagerM.GetPartSolid(Map.refSceneHostV.m_nIdPart)
- If IsNothing(PartSolidSel) Then m_RotateVM.Annulla()
- End Sub
-
- Public Sub AngText_Changed() Handles RotInputData.TextChanged
- If Not IsNothing(Map.refSceneButtonV.m_RotateUC) Then m_RotateVM.AngText_Changed()
- End Sub
-
-#End Region ' Events
-
-End Class
diff --git a/Rotate/RotateVM.vb b/Rotate/RotateVM.vb
index 157cc2d..2dcdaee 100644
--- a/Rotate/RotateVM.vb
+++ b/Rotate/RotateVM.vb
@@ -2,29 +2,22 @@
Imports EgtWPFLib5
Public Class RotateVM
- Inherits VMBase
+ Inherits SceneUserControlVM
#Region "FIELDS & PROPERTIES"
#Region "Messages"
- Public ReadOnly Property Conferma_Msg As String
- Get
- Return EgtMsg(110003)
- End Get
- End Property
-
- Public ReadOnly Property Annulla_Msg As String
- Get
- Return EgtMsg(110004)
- End Get
- End Property
-
- Public ReadOnly Property TopBar_Msg As String
+ Public ReadOnly Property TopBar_Msg1 As String
Get
Return EgtMsg(110005)
End Get
End Property
+ Public ReadOnly Property TopBar_Msg2 As String
+ Get
+ Return EgtMsg(110022)
+ End Get
+ End Property
Public ReadOnly Property Testo_Msg As String
Get
@@ -34,6 +27,13 @@ Public Class RotateVM
#End Region ' Messages
+ Private m_MsgList As New List(Of String)({TopBar_Msg1, TopBar_Msg2})
+ Public ReadOnly Property MsgList As List(Of String)
+ Get
+ Return m_MsgList
+ End Get
+ End Property
+
Private m_bAxisSelected As Boolean = False
Public Property bAxisSelected As Boolean
Get
@@ -42,42 +42,59 @@ Public Class RotateVM
Set(value As Boolean)
m_bAxisSelected = value
If m_bAxisSelected Then
- 'Map.refSceneButtonV.m_RotateUC.TopBar.Text = "Inserisci l'angolo di rotazione"
+ DirectCast(ParamList(0), _TextBlockParam).MsgValue = MsgList(1)
+ DirectCast(ParamList(1), _TextBoxParam).IsEnabled = True
End If
- NotifyPropertyChanged(NameOf(bAxisSelected))
End Set
End Property
- Private m_ConfermaCmd As ICommand
- Public ReadOnly Property ConfermaCmd As ICommand
- Get
- If m_ConfermaCmd Is Nothing Then
- m_ConfermaCmd = New Command(AddressOf Conferma)
- End If
- Return m_ConfermaCmd
- End Get
- End Property
-
- Private m_AnnullaCmd As ICommand
- Public ReadOnly Property AnnullaCmd As ICommand
- Get
- If m_AnnullaCmd Is Nothing Then
- m_AnnullaCmd = New Command(AddressOf Annulla)
- End If
- Return m_AnnullaCmd
- End Get
- End Property
-
-
#End Region ' Fields & Properties
+#Region "CONSTRUCTOR"
+ Public Sub New()
+ MyBase.New()
+
+ ' Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent().
+ Dim PartSolidSel As PartSolidM = SolidManagerM.GetPartSolid(Map.refSceneHostV.m_nIdPart)
+ If IsNothing(PartSolidSel) Then Return
+ PartSolidSel.ShowAxis()
+
+ 'comincio a contare le operazioni temporanee per poterle poi salvare nella eventualmente nella storia
+ Map.refSceneHostV.m_nTransfNum = 0
+ ' setto le variabili di salvataggio per le operazioni temporanee
+ Dim bSave As Boolean = False
+ If EgtLuaSetGlobBoolVar("ASS.bSaveHist", bSave) Then AssLog("ASS.bSaveHist = " & bSave.ToString)
+ Dim bSaveTemp As Boolean = True
+ If EgtLuaSetGlobBoolVar("ASS.bSaveTemp", bSaveTemp) Then AssLog("ASS.bSaveTemp = " & bSaveTemp.ToString)
+
+ LoadParamList()
+ End Sub
+
+#End Region ' Constructor
+
#Region "METHODS"
- Public Sub Conferma()
+ Public Overrides Sub LoadParamList()
+ Title = "Rotate".ToUpper()
+ AddGenericParam(New _TextBlockParam("Messaggio", MsgList(0)))
+ AddGenericParam(New _TextBoxParam(EgtMsg(110006), 0, Visibility.Visible, False))
+ End Sub
+
+ '' uso il tasto preview anziché passare dall'evento TextChanged
+ 'Public Overrides Sub OnTextboxTextChanged(sender As Object, Text As String)
+ ' AngText_Changed()
+ 'End Sub
+
+ Public Overrides Sub Conferma()
+ If Not Map.refSceneHostV.m_bRotated Then AngText_Changed()
Close()
End Sub
- Public Sub Annulla()
+ Public Overrides Sub ShowPreview()
+ AngText_Changed()
+ End Sub
+
+ Public Overrides Sub Annulla()
' faccio il reset del rotate
If Map.refSceneHostV.m_bRotated Then
SolidManagerM.ResetRotation(True, True)
@@ -99,6 +116,8 @@ Public Class RotateVM
If EgtLuaSetGlobBoolVar("ASS.bSaveHist", bSave) Then AssLog("ASS.bSaveHist = " & bSave.ToString)
Dim bSaveTemp As Boolean = False
If EgtLuaSetGlobBoolVar("ASS.bSaveTemp", bSaveTemp) Then AssLog("ASS.bSaveTemp = " & bSaveTemp.ToString)
+ Map.refSceneHostV.m_bRotated = False
+ Map.refSceneHostV.m_dAngRot = 0
Map.refSceneButtonV.RemoveRotateUC()
End Sub
@@ -113,7 +132,7 @@ Public Class RotateVM
Dim nId As Integer = Map.refSceneHostV.m_nIdPart
If nId = GDB_ID.NULL Then Return
- Dim sAng As String = Map.refSceneButtonV.m_RotateUC.RotInputData.Text
+ Dim sAng As String = DirectCast(ParamList(1), _TextBoxParam).Value
If String.IsNullOrEmpty(sAng) Then Return
If Not IsNumeric(sAng) Then Return
Dim dAng As Double = CDbl(sAng)
@@ -131,6 +150,7 @@ Public Class RotateVM
Map.refSceneHostV.m_bRotated = True
Map.refSceneHostV.m_dAngRot = dAng
End If
+ EgtDraw()
End Sub
#End Region ' Methods
diff --git a/SceneButton/SceneButtonV.xaml.vb b/SceneButton/SceneButtonV.xaml.vb
index 89e63f8..45c49af 100644
--- a/SceneButton/SceneButtonV.xaml.vb
+++ b/SceneButton/SceneButtonV.xaml.vb
@@ -3,8 +3,8 @@
#Region "FIELDS & PROPERTIES"
Private m_refSceneButtonVM As SceneButtonVM
- Public m_PairUC As PairV
- Public m_RotateUC As RotateV
+ Public m_PairUC As SceneUserControlV
+ Public m_RotateUC As SceneUserControlV
Public m_SelOptionUC As SelOptionV
Public m_MoveUC As SceneUserControlV
Public m_SceneUserControlV As SceneUserControlV
@@ -41,11 +41,13 @@
Public Sub LoadPairUC()
If IsNothing(m_PairUC) Then
- m_PairUC = New PairV
+ m_PairUC = New SceneUserControlV
+ Dim m_PairVM As New PairVM()
+ m_PairUC.DataContext = m_PairVM
Grid.SetColumn(m_PairUC, 0)
Grid.SetRow(m_PairUC, 0)
Grid.SetColumnSpan(m_PairUC, 2)
- Grid.SetRowSpan(m_PairUC, 2)
+ Grid.SetRowSpan(m_PairUC, 3)
MainGrid.Children.Add(m_PairUC)
End If
End Sub
@@ -56,13 +58,20 @@
End Sub
Public Sub LoadRotateUC()
- If IsNothing(m_RotateUC) Then
- m_RotateUC = New RotateV
+ Dim PartSolidSel As PartSolidM = SolidManagerM.GetPartSolid(Map.refSceneHostV.m_nIdPart)
+ If Not IsNothing(PartSolidSel) And IsNothing(m_RotateUC) Then
+ m_RotateUC = New SceneUserControlV
+ Dim m_RotateVM As New RotateVM()
+ m_RotateUC.DataContext = m_RotateVM
Grid.SetColumn(m_RotateUC, 0)
Grid.SetRow(m_RotateUC, 0)
Grid.SetColumnSpan(m_RotateUC, 2)
- Grid.SetRowSpan(m_RotateUC, 2)
+ Grid.SetRowSpan(m_RotateUC, 3)
MainGrid.Children.Add(m_RotateUC)
+ Else
+ ' se non si è attivata la modalità di rotazione allora tolgo il check al toggle button
+ Dim RotateTgBtn As _ToggleButton = DirectCast(Map.refSceneButtonVM.GetButton(EGT_ROTATE), _ToggleButton)
+ RotateTgBtn.IsChecked = False
End If
End Sub
diff --git a/SceneHost/SceneHostV.xaml.vb b/SceneHost/SceneHostV.xaml.vb
index f5acc44..a1dff7d 100644
--- a/SceneHost/SceneHostV.xaml.vb
+++ b/SceneHost/SceneHostV.xaml.vb
@@ -353,13 +353,14 @@ Line1:
End If
Dim PartSolidIdTempSel As PartSolidM = GetPartSolid(m_nIdPart)
If IsNothing(PartSolidIdTempSel) Then Return
+ Dim RotateVM As RotateVM = DirectCast(Map.refSceneButtonV.m_RotateUC.DataContext, RotateVM)
If EgtGetType(nId) = GDB_TY.CRV_LINE And PartSolidIdTempSel.nIdLineAxisRotate = -1 Then
PartSolidIdTempSel.nIdLineAxisRotate = nId
EgtSetMark(nId)
m_nIdMarked1 = nId
' se trovo già un valore scritto nella casella di testo allora ruoto subito il part attorno all'asse indicato
- Map.refSceneButtonV.m_RotateUC.DataContext.bAxisSelected = True
- Map.refSceneButtonV.m_RotateUC.AngText_Changed()
+ RotateVM.bAxisSelected = True
+ RotateVM.AngText_Changed()
Return
ElseIf EgtGetType(nId) = GDB_TY.CRV_LINE And PartSolidIdTempSel.nIdLineAxisRotate <> -1 Then
EgtResetMark(PartSolidIdTempSel.nIdLineAxisRotate)
@@ -367,8 +368,8 @@ Line1:
EgtSetMark(nId)
m_nIdMarked1 = nId
' se trovo già un valore scritto nella casella di testo allora ruoto subito il part attorno all'asse indicato
- Map.refSceneButtonV.m_RotateUC.DataContext.m_bAxisSelected = True
- Map.refSceneButtonV.m_RotateUC.AngText_Changed()
+ RotateVM.bAxisSelected = True
+ RotateVM.AngText_Changed()
End If
' Passo al successivo
nId = EgtGetNextObjInSelWin()
@@ -405,31 +406,21 @@ Line1:
If IsNothing(PartSolidIdTempSel) Then Return
Dim PartSolidIdTempSel2 As PartSolidM = GetPartSolid(EgtGetParent(EgtGetParent(PartSolidIdTempSel.nIdLineSecond)))
Dim PartSolidIdTempSelNew As PartSolidM = GetPartSolid(nPartId)
+ Dim PairUC As PairVM = DirectCast(Map.refSceneButtonV.m_PairUC.DataContext, PairVM)
If EgtGetType(nId) = GDB_TY.CRV_LINE And PartSolidIdTempSel.nIdLineFirst = -1 Then
PartSolidIdTempSel.nIdLineFirst = nId
EgtSetMark(nId)
m_nIdMarked1 = nId
- Map.refSceneButtonV.m_PairUC.TopBar.Text = "Seleziona dal secondo Part il lato con cui vuoi accoppiare quello appena selezionato"
- 'PairOption
- 'MyMsgTxBl.Text = "Seleziona dal secondo Part il lato con cui vuoi accoppiare quello appena selezionato"
+ PairUC.AdvanceStage()
Return
' impongo anche che il secondo lato appartenga ad un solid diverso dal primo selezionato
ElseIf EgtGetType(nId) = GDB_TY.CRV_LINE And PartSolidIdTempSel.nIdLineSecond = -1 And
nPartId <> PartSolidIdTempSel.PartId And nPartId <> PartSolidIdTempSel.PartSolidId Then
- 'MyMsgTxBl.Text = "Modifica le impostazioni di accoppiamento e conferma oppura annulla l'accoppiamento" & vbCrLf &
- ' "tenendo premuto SHIFT puoi anche selezionare per ogni Part una faccia adiacente ai due lati accoppiati, per farle coincidere"
- Map.refSceneButtonV.m_PairUC.TopBar.Text = "Modifica le impostazioni di accoppiamento;" &
- "tenendo premuto SHIFT puoi anche selezionare per ogni Part una faccia adiacente ai due lati accoppiati, per farle coincidere"
- Map.refSceneButtonV.m_PairUC.PairOption.Visibility = Visibility.Visible
- Map.refSceneButtonV.m_PairUC.FlipOption1.Visibility = Visibility.Visible
- Map.refSceneButtonV.m_PairUC.FlipOption2.Visibility = Visibility.Visible
+ PairUC.AdvanceStage()
PartSolidIdTempSel.nIdLineSecond = nId
EgtSetMark(nId)
m_nIdMarked2 = nId
- Dim nOpInd As Integer = Map.refSceneButtonV.m_PairUC.PairOption.SelectedIndex
- Dim bFlip1 As Boolean = Map.refSceneButtonV.m_PairUC.FlipOption1.IsChecked
- Dim bFlip2 As Boolean = Map.refSceneButtonV.m_PairUC.FlipOption2.IsChecked
- PairPart(m_nIdPart, nOpInd, bFlip1, bFlip2, m_bFlippedParal, m_bFlippedPerp, m_nTransfNum)
+ PairUC.PairParts()
Return
' impongo anche che il secondo lato appartenga ad un solid diverso dal primo selezionato
ElseIf EgtGetType(nId) = GDB_TY.CRV_LINE And PartSolidIdTempSel.nIdLineSecond <> -1 And
@@ -440,10 +431,7 @@ Line1:
EgtSetMark(nId)
m_nIdMarked2 = nId
PartSolidIdTempSel.nIdLineSecond = nId
- Dim nOpInd As Integer = Map.refSceneButtonV.m_PairUC.PairOption.SelectedIndex
- Dim bFlip1 As Boolean = Map.refSceneButtonV.m_PairUC.FlipOption1.IsChecked
- Dim bFlip2 As Boolean = Map.refSceneButtonV.m_PairUC.FlipOption2.IsChecked
- PairPart(m_nIdPart, nOpInd, bFlip1, bFlip2, m_bFlippedParal, m_bFlippedPerp, m_nTransfNum)
+ PairUC.PairParts()
Return
' impongo che la prima faccia appartenga al primo solido selezionato
ElseIf (ModifierKeys.Shift And Keyboard.Modifiers) > 0 And EgtGetType(nId) = GDB_TY.SRF_FRGN And
diff --git a/SceneUserControl/SceneUserControlV.xaml b/SceneUserControl/SceneUserControlV.xaml
index d7814e9..99b7acd 100644
--- a/SceneUserControl/SceneUserControlV.xaml
+++ b/SceneUserControl/SceneUserControlV.xaml
@@ -37,24 +37,40 @@
+ Style="{StaticResource TextBlockParam_TxBl}"
+ Visibility="{Binding nVisibility}"/>
+ Style="{StaticResource SceneUserControl_UniformGrid}"
+ Visibility="{Binding nVisibility}">
-
+
+ Style="{StaticResource SceneUserControl_UniformGrid}"
+ Visibility="{Binding nVisibility}">
+ DisplayMemberPath="Name"
+ IsEnabled="{Binding IsEnabled}"/>
+
+
+
+
+
+
@@ -68,7 +84,6 @@
@@ -79,6 +94,7 @@
Style="{StaticResource Preview_Btn}"/>
diff --git a/SceneUserControl/SceneUserControlVM.vb b/SceneUserControl/SceneUserControlVM.vb
index 338658b..eae65ae 100644
--- a/SceneUserControl/SceneUserControlVM.vb
+++ b/SceneUserControl/SceneUserControlVM.vb
@@ -2,6 +2,7 @@
Imports EgtUILib
Public Class SceneUserControlVM
+ Inherits VMBase
#Region "FIELDS & PROPERTIES"
@@ -66,6 +67,29 @@ Public Class SceneUserControlVM
Public Overridable Sub LoadParamList()
End Sub
+ Public Sub AddGenericParam(Control As GenericParam)
+ If TypeOf Control Is _CheckBoxParam Then
+ AddHandler DirectCast(Control, _CheckBoxParam).CheckChanged, AddressOf OnCheckboxCheckedChanged
+ End If
+ If TypeOf Control Is _ComboBoxParam Then
+ AddHandler DirectCast(Control, _ComboBoxParam).SelectionChanged, AddressOf OnComboboxSelectionChanged
+ End If
+ If TypeOf Control Is _TextBoxParam Then
+ AddHandler DirectCast(Control, _TextBoxParam).TextChanged, AddressOf OnTextboxTextChanged
+ End If
+ ParamList.Add(Control)
+ End Sub
+
+ ' Event handler for checkbox CheckedChanged
+ Public Overridable Sub OnCheckboxCheckedChanged(sender As Object, CheckState As Boolean)
+ End Sub
+
+ Public Overridable Sub OnComboboxSelectionChanged(sender As Object, Selection As ParamCmBx)
+ End Sub
+
+ Public Overridable Sub OnTextboxTextChanged(sender As Object, Text As String)
+ End Sub
+
#End Region ' Methods
#Region "COMMANDS"
@@ -138,12 +162,36 @@ Public Class GenericParam
End Set
End Property
+ Private m_nVisibility As Visibility = Visibility.Visible
+ Public Property nVisibility As Visibility
+ Get
+ Return m_nVisibility
+ End Get
+ Set(value As Visibility)
+ m_nVisibility = value
+ NotifyPropertyChanged(NameOf(nVisibility))
+ End Set
+ End Property
+
+ Private m_IsEnabled As Boolean = True
+ Public Property IsEnabled As Boolean
+ Get
+ Return m_IsEnabled
+ End Get
+ Set(value As Boolean)
+ m_IsEnabled = value
+ NotifyPropertyChanged(NameOf(IsEnabled))
+ End Set
+ End Property
+
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
- Sub New(sName As String)
+ Sub New(sName As String, Optional Visibility As Visibility = Visibility.Visible, Optional bIsEnabled As Boolean = True)
m_Name = sName
+ nVisibility = Visibility
+ IsEnabled = bIsEnabled
End Sub
#End Region ' Constructor
@@ -153,6 +201,7 @@ End Class
Public Class _TextBoxParam
Inherits GenericParam
+ Public Event TextChanged(sender As Object, text As String)
#Region "FIELDS & PROPERTIES"
Private m_Value As String = String.Empty
@@ -162,6 +211,7 @@ Public Class _TextBoxParam
End Get
Set(value As String)
m_Value = value
+ RaiseEvent TextChanged(Me, m_Value)
NotifyPropertyChanged(NameOf(value))
End Set
End Property
@@ -170,8 +220,8 @@ Public Class _TextBoxParam
#Region "CONSTRUCTOR"
- Sub New(sName As String, sValue As String)
- MyBase.New(sName)
+ Sub New(sName As String, sValue As String, Optional nVisibility As Visibility = Visibility.Visible, Optional bIsEnabled As Boolean = True)
+ MyBase.New(sName, nVisibility, bIsEnabled)
m_Value = sValue
End Sub
@@ -191,7 +241,7 @@ Public Class _TextBlockParam
End Get
Set(value As String)
m_MsgValue = value
- NotifyPropertyChanged(NameOf(value))
+ NotifyPropertyChanged(NameOf(MsgValue))
End Set
End Property
@@ -199,8 +249,8 @@ Public Class _TextBlockParam
#Region "CONSTRUCTOR"
- Sub New(sName As String, sValue As String)
- MyBase.New(sName)
+ Sub New(sName As String, sValue As String, Optional nVisibility As Visibility = Visibility.Visible, Optional bIsEnabled As Boolean = True)
+ MyBase.New(sName, nVisibility, bIsEnabled)
m_MsgValue = sValue
End Sub
@@ -211,6 +261,7 @@ End Class
Public Class _ComboBoxParam
Inherits GenericParam
+ Public Event SelectionChanged(sender As Object, selection As ParamCmBx)
#Region "FIELDS & PROPERTIES"
Private m_ParamCmBxList As New List(Of ParamCmBx)
@@ -231,6 +282,7 @@ Public Class _ComboBoxParam
End Get
Set(value As ParamCmBx)
m_SelParamCmBx = value
+ RaiseEvent SelectionChanged(Me, m_SelParamCmBx)
NotifyPropertyChanged(NameOf(SelParamCmBx))
End Set
End Property
@@ -239,10 +291,11 @@ Public Class _ComboBoxParam
#Region "CONSTRUCTOR"
- Sub New(sName As String, _ParamCmBxList As List(Of ParamCmBx))
- MyBase.New(sName)
+ Sub New(sName As String, _ParamCmBxList As List(Of ParamCmBx), IndexSelected As Integer,
+ Optional nVisibility As Visibility = Visibility.Visible, Optional bIsEnabled As Boolean = True)
+ MyBase.New(sName, nVisibility, bIsEnabled)
m_ParamCmBxList = _ParamCmBxList
- m_SelParamCmBx = m_ParamCmBxList(0)
+ m_SelParamCmBx = m_ParamCmBxList(IndexSelected)
End Sub
#End Region ' Constructor
@@ -273,4 +326,46 @@ Public Class ParamCmBx
#End Region ' Constructor
+End Class
+
+Public Class _CheckBoxParam
+ Inherits GenericParam
+
+ Public Event CheckChanged(sender As Object, checked As Boolean)
+#Region "FIELDS & PROPERTIES"
+
+ Private m_MsgValue As String = String.Empty
+ Public Property MsgValue As String
+ Get
+ Return m_MsgValue
+ End Get
+ Set(value As String)
+ m_MsgValue = value
+ NotifyPropertyChanged(NameOf(value))
+ End Set
+ End Property
+
+ Private m_IsChecked As Boolean = False
+ Public Property IsChecked As Boolean
+ Get
+ Return m_IsChecked
+ End Get
+ Set(value As Boolean)
+ m_IsChecked = value
+ RaiseEvent CheckChanged(Me, m_IsChecked)
+ NotifyPropertyChanged(NameOf(value))
+ End Set
+ End Property
+
+#End Region ' Fields & Properties
+
+#Region "CONSTRUCTOR"
+
+ Sub New(sName As String, sValue As String, Optional nVisibility As Visibility = Visibility.Visible, Optional bIsEnabled As Boolean = True)
+ MyBase.New(sName, nVisibility, bIsEnabled)
+ m_MsgValue = sValue
+ End Sub
+
+#End Region ' Constructor
+
End Class
\ No newline at end of file
diff --git a/Utility/EgtStone3DDefaultStyle.xaml b/Utility/EgtStone3DDefaultStyle.xaml
index 769c8ce..b028d9d 100644
--- a/Utility/EgtStone3DDefaultStyle.xaml
+++ b/Utility/EgtStone3DDefaultStyle.xaml
@@ -542,6 +542,7 @@