Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop

This commit is contained in:
Emmanuele Sassi
2021-09-21 17:05:02 +02:00
14 changed files with 464 additions and 109 deletions
@@ -165,4 +165,8 @@ Public Class ProjectFileVM
m_sProdsDir = sProdsDir
End Sub
Public Sub SetMachine(sMachine)
m_ProjectFileM.sMachine = sMachine
End Sub
End Class
@@ -531,6 +531,25 @@ namespace EgtBEAMWALL.DataLayer.Controllers
return coreConv(currData);
}
/// <summary>
/// Update record su DB x PType
/// </summary>
/// <param name="ProdId"></param>
/// <param name="Machine"></param>
/// <returns></returns>
public Core.ProdFileM UpdateMachine(int ProdId, String Machine)
{
var currData = FindByProdId(ProdId);
// aggiorno valore BTL
currData.Machine = Machine;
// Commit changes
dbCtx.SaveChanges();
ResetController();
return coreConv(currData);
}
#endregion Public Methods
}
}
@@ -555,6 +555,25 @@ namespace EgtBEAMWALL.DataLayer.Controllers
return coreConv(currData);
}
/// <summary>
/// Update record su DB x PType
/// </summary>
/// <param name="ProjId"></param>
/// <param name="Machine"></param>
/// <returns></returns>
public Core.ProjFileM UpdateMachine(int ProjId, String Machine)
{
var currData = FindByProjId(ProjId);
// aggiorno valore BTL
currData.Machine = Machine;
// Commit changes
dbCtx.SaveChanges();
ResetController();
return coreConv(currData);
}
#endregion Public Methods
}
@@ -2,10 +2,13 @@
Imports EgtUILib
Imports EgtWPFLib5
Imports EgtBEAMWALL.Core
Imports System.Collections.ObjectModel
Public Class CALCPanelVM
Inherits VMBase
Private m_OrigSelectedMachine As Machine = Nothing
Private m_CALCPanel_IsEnabled As Boolean = True
Public Property CALCPanel_IsEnabled As Boolean
Get
@@ -16,10 +19,52 @@ Public Class CALCPanelVM
End Set
End Property
Private m_ChooseMachine_Visibility As Boolean = False
Public Property ChooseMachine_Visibility As Visibility
Get
Return If(m_ChooseMachine_Visibility, Visibility.Visible, Visibility.Collapsed)
End Get
Set(value As Visibility)
m_ChooseMachine_Visibility = (value = Visibility.Visible)
NotifyPropertyChanged(NameOf(ChooseMachine_Visibility))
End Set
End Property
Friend Sub SetChooseMachine_Visibility(IsVisible As Boolean)
m_ChooseMachine_Visibility = IsVisible
NotifyPropertyChanged(NameOf(ChooseMachine_Visibility))
End Sub
' Lista delle macchine disponibili per il tipo di progetto corrente
Private m_MachineList As New ObservableCollection(Of Machine)
Public Property MachineList As ObservableCollection(Of Machine)
Get
Return m_MachineList
End Get
Set(value As ObservableCollection(Of Machine))
m_MachineList = value
End Set
End Property
' Macchina correntemente selezionata e quindi attiva
Private m_SelectedMachine As Machine = Nothing
Public Property SelectedMachine As Machine
Get
Return m_SelectedMachine
End Get
Set(value As Machine)
If value IsNot m_SelectedMachine Then
m_SelectedMachine = value
NotifyPropertyChanged(NameOf(SelectedMachine))
End If
End Set
End Property
' Definizione comandi
Private m_cmdVerify As ICommand
Private m_cmdVerifyAll As ICommand
Private m_cmdSimulate As ICommand
Private m_cmdChooseMachine As ICommand
Private m_cmdOk As ICommand
#Region "Messages"
@@ -303,6 +348,56 @@ Public Class CALCPanelVM
Return PartVM.FeatureVMList.FirstOrDefault(Function(x) x.nFeatureId = nFeatureId)
End Function
Friend Sub LoadMachineList()
MachineList.Clear()
' ciclo per aggiungere macchine congrue al tipo del progetto corrente
For Each Machine In Map.refMachinePanelVM.MachineList
Dim nMachType As MachineType = DirectCast(Machine, MyMachine).nType
Dim nProjType As BWType
Dim sMachineName As String = ""
If Map.refMainMenuVM.SelPage = Pages.VIEW Then
nProjType = Map.refProjManagerVM.nProjType
sMachineName = If(Not IsNothing(Map.refProjManagerVM.CurrProj), Map.refProjManagerVM.CurrProj.sMachine, "")
ElseIf Map.refMainMenuVM.SelPage = Pages.MACHINING Then
nProjType = Map.refProdManagerVM.nProdType
sMachineName = If(Not IsNothing(Map.refProdManagerVM.CurrProd), Map.refProdManagerVM.CurrProd.sMachine, "")
End If
If nMachType = nProjType OrElse
(nMachType = 3 And Map.refMainMenuVM.SelPage = Pages.VIEW And Not IsNothing(Map.refProjManagerVM.CurrProj)) OrElse
(nMachType = 3 And Map.refMainMenuVM.SelPage = Pages.MACHINING And Not IsNothing(Map.refProdManagerVM.CurrProd)) Then
MachineList.Add(Machine)
' Se il nome Macchina coincide setto la macchina selezionata con la macchina associata al progetto
If Machine.Name = sMachineName Then
SelectedMachine = MachineList(MachineList.IndexOf(Machine))
m_OrigSelectedMachine = SelectedMachine
End If
End If
Next
End Sub
Friend Function IsMachineModified() As Boolean
Return Not IsNothing(SelectedMachine) AndAlso
Not IsNothing(m_OrigSelectedMachine) AndAlso
SelectedMachine.Name <> m_OrigSelectedMachine.Name
End Function
Friend Sub CloseResetMachine()
' ritorno al valore originale e collasso CmBx e pulsante di conferma
RevertToOriginalMachine()
SetChooseMachine_Visibility(False)
End Sub
Friend Sub RevertToOriginalMachine()
' ri-setto SelectedMachine di CALCPanel e MachinePanel al valore originale
SelectedMachine = m_OrigSelectedMachine
Map.refMachinePanelVM.SelectedMachine = SelectedMachine
End Sub
Friend Sub ResetMachineModified()
' aggiorno l'originale SelectedMachine in modo che non appaia modificata
m_OrigSelectedMachine = SelectedMachine
End Sub
#End Region ' METHODS
#Region "COMMANDS"
@@ -581,6 +676,55 @@ Public Class CALCPanelVM
#End Region ' Simulate
#Region "ChooseMachine"
''' <summary>
''' Returns a command that do Open.
''' </summary>
Public ReadOnly Property ChooseMachine_Command As ICommand
Get
If m_cmdChooseMachine Is Nothing Then
m_cmdChooseMachine = New Command(AddressOf ChooseMachine)
End If
Return m_cmdChooseMachine
End Get
End Property
''' <summary>
''' Execute the Open. This method is invoked by the OpenCommand.
''' </summary>
Friend Sub ChooseMachine()
' apro la CmBx per la scelta e il pulsante di conferma
SetChooseMachine_Visibility(True)
End Sub
#End Region ' ChooseMachine
#Region "Ok"
''' <summary>
''' Returns a command that do Open.
''' </summary>
Public ReadOnly Property Ok_Command As ICommand
Get
If m_cmdOk Is Nothing Then
m_cmdOk = New Command(AddressOf Ok)
End If
Return m_cmdOk
End Get
End Property
''' <summary>
''' Execute the Open. This method is invoked by the OpenCommand.
''' </summary>
Friend Sub Ok()
' aggiorno la Macchina selezionata nel Machine Panel e collasso CmBx e pulsante di conferma
If Not IsNothing(SelectedMachine) Then Map.refMachinePanelVM.SelectedMachine = SelectedMachine
SetChooseMachine_Visibility(False)
End Sub
#End Region ' Ok
#End Region ' COMMANDS
End Class
@@ -29,5 +29,30 @@
IsEnabled="{Binding CALCPanel_IsEnabled}">
<Image Source="/Resources/CALCPanel/15_simula.png" Stretch="Uniform"/>
</Button>
<Button Content="M"
FontSize="20"
FontWeight="Light"
ToolTip="Reset Macchina"
Style="{StaticResource ToolBar_Button}"
Command="{Binding ChooseMachine_Command}">
<!--<Image Source="/Resources/InstrumentPanel/Analyze.png" Stretch="Uniform"/>-->
</Button>
<Grid Margin="0,0,5,0" Visibility="{Binding ChooseMachine_Visibility}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<!--Combobox per selezionare la macchina corrente-->
<ComboBox ItemsSource="{Binding Path=MachineList}" DisplayMemberPath="Name"
SelectedItem="{Binding Path=SelectedMachine}" SelectedValuePath="Name"
Height="22" Width="150"
Grid.Column="0"/>
<Button Content="OK"
FontSize="10"
FontWeight="Light"
Style="{StaticResource ToolBar_Button}"
Command="{Binding Ok_Command}"
Grid.Column="1"/>
</Grid>
</EgtFloating:EgtFloatingPanel>
@@ -208,6 +208,7 @@ Public Class MainMenuVM
Map.refProjectVM.SetShowBeamPanel_Visibility(False)
Map.refProjectVM.SetProjManager_Visibility(False)
Map.refProjectVM.SetProdManager_Visibility(True)
Map.refCALCPanelVM.SetChooseMachine_Visibility(False)
Return True
End Function
@@ -295,6 +296,7 @@ Public Class MainMenuVM
Map.refProjectVM.SetShowBeamPanel_Visibility(True)
Map.refProjectVM.SetProjManager_Visibility(True)
Map.refProjectVM.SetProdManager_Visibility(False)
Map.refCALCPanelVM.SetChooseMachine_Visibility(False)
EgtResetCurrMachGroup()
Return True
End Function
@@ -173,6 +173,10 @@ Public Class MainWindowVM
If Map.refInstrumentPanelVM.GetDistIsChecked Then
Map.refInstrumentPanelVM.SetGetDistance_IsChecked(False)
End If
' se Reset Macchina è aperto
If (nSelTabPage = Pages.VIEW Or nSelTabPage = Pages.MACHINING) AndAlso Map.refCALCPanelVM.ChooseMachine_Visibility = Visibility.Visible Then
Map.refCALCPanelVM.CloseResetMachine()
End If
' pulisco output
Map.refMyStatusBarVM.ClearOutputMessage()
End If
@@ -28,6 +28,16 @@ Public Class ProdManagerVM
End Set
End Property
Private m_TempCurrProd As ProdFileVM
Friend Property TempCurrProd As ProdFileVM
Get
Return m_TempCurrProd
End Get
Set(value As ProdFileVM)
m_TempCurrProd = value
End Set
End Property
' indice ultimo progetto
Private m_nLastProdId As Integer
Friend ReadOnly Property nLastProdId As Integer
@@ -170,7 +180,8 @@ Public Class ProdManagerVM
OpenProject(Nothing)
End Sub
Friend Sub OpenProject(TempCurrProd As ProdFileVM)
Friend Sub OpenProject(TempCurrPd As ProdFileVM)
m_TempCurrProd = TempCurrPd
Dim sFilePath As String = ""
' se la string è vuota
Dim OpenProjectFileDialogVM As OpenProjectFileDialogVM = Nothing
@@ -186,64 +197,66 @@ Public Class ProdManagerVM
sFilePath = If(Not IsNothing(TempCurrProd.sProdPath), TempCurrProd.sProdPath, "")
End If
If File.Exists(sFilePath) Then
' apro un nuovo contesto per leggere il tipo progetto senza caricare nel programma il progetto intero
Dim nCurrCtx As Integer = EgtGetCurrentContext()
Dim nTempCtx As Integer = EgtInitContext()
If nTempCtx <> 0 Then
EgtOpenFile(sFilePath)
Dim nBTLProjType As Integer
Dim ProjectType As ProjectType = If(Map.refMainMenuVM.SelPage = Pages.VIEW, ProjectType.PROJ, ProjectType.PROD)
Dim ProjId As Integer = If(ProjectType = ProjectType.PROJ, Map.refProjManagerVM.nLoadingProjId, 0)
Dim nBTLInfoId As Integer
Dim sValue As String = String.Empty
' se devo filtrare un progetto
If ProjId > 0 Then
' cerco tra i layer BTLInfo
Dim nBTLInfoLayerId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, BTLINFO)
While nBTLInfoLayerId <> GDB_ID.NULL
' verifico se il layer appartiene al ProjId
Dim nBTLInfoLayerProjId As Integer
EgtGetInfo(nBTLInfoLayerId, BTL_PRT_PROJ, nBTLInfoLayerProjId)
If nBTLInfoLayerProjId = ProjId Then
nBTLInfoId = nBTLInfoLayerId
Exit While
End If
nBTLInfoLayerId = EgtGetNextName(nBTLInfoLayerId, BTLINFO)
End While
Else
nBTLInfoId = EgtGetFirstNameInGroup(GDB_ID.ROOT, BTLINFO)
End If
EgtGetInfo(nBTLInfoId, BTL_GEN_PROJTYPE, nBTLProjType)
' verifico che il tipo di progetto sia congruo al tipo di macchina corrente
Dim bOkType As Boolean = True
Select Case CurrentMachine.nType
Case Core.ConstBeam.MachineType.NULL
bOkType = False
Case Core.ConstBeam.MachineType.BEAM
If nBTLProjType <> BWType.BEAM Then bOkType = False
Case Core.ConstBeam.MachineType.WALL
If nBTLProjType <> BWType.WALL Then bOkType = False
Case Core.ConstBeam.MachineType.BOTH
' non fare niente
End Select
' torno sul contesto corrente
EgtSetCurrentContext(nCurrCtx)
EgtDeleteContext(nTempCtx)
' se il tipo non è congruo mostro msg d'errore ed esco dall'apertura progetto
If Not bOkType Then
MessageBox.Show(EgtMsg(61881), EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) 'Error
Return
End If
End If
'' apro un nuovo contesto per leggere il tipo progetto senza caricare nel programma il progetto intero
'Dim nCurrCtx As Integer = EgtGetCurrentContext()
'Dim nTempCtx As Integer = EgtInitContext()
'If nTempCtx <> 0 Then
' EgtOpenFile(sFilePath)
' Dim nBTLProjType As Integer
' Dim ProjectType As ProjectType = If(Map.refMainMenuVM.SelPage = Pages.VIEW, ProjectType.PROJ, ProjectType.PROD)
' Dim ProjId As Integer = If(ProjectType = ProjectType.PROJ, Map.refProjManagerVM.nLoadingProjId, 0)
' Dim nBTLInfoId As Integer
' Dim sValue As String = String.Empty
' ' se devo filtrare un progetto
' If ProjId > 0 Then
' ' cerco tra i layer BTLInfo
' Dim nBTLInfoLayerId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, BTLINFO)
' While nBTLInfoLayerId <> GDB_ID.NULL
' ' verifico se il layer appartiene al ProjId
' Dim nBTLInfoLayerProjId As Integer
' EgtGetInfo(nBTLInfoLayerId, BTL_PRT_PROJ, nBTLInfoLayerProjId)
' If nBTLInfoLayerProjId = ProjId Then
' nBTLInfoId = nBTLInfoLayerId
' Exit While
' End If
' nBTLInfoLayerId = EgtGetNextName(nBTLInfoLayerId, BTLINFO)
' End While
' Else
' nBTLInfoId = EgtGetFirstNameInGroup(GDB_ID.ROOT, BTLINFO)
' End If
' EgtGetInfo(nBTLInfoId, BTL_GEN_PROJTYPE, nBTLProjType)
' ' verifico che il tipo di progetto sia congruo al tipo di macchina corrente
' Dim bOkType As Boolean = True
' Select Case CurrentMachine.nType
' Case Core.ConstBeam.MachineType.NULL
' bOkType = False
' Case Core.ConstBeam.MachineType.BEAM
' If nBTLProjType <> BWType.BEAM Then bOkType = False
' Case Core.ConstBeam.MachineType.WALL
' If nBTLProjType <> BWType.WALL Then bOkType = False
' Case Core.ConstBeam.MachineType.BOTH
' ' non fare niente
' End Select
' ' torno sul contesto corrente
' EgtSetCurrentContext(nCurrCtx)
' EgtDeleteContext(nTempCtx)
' ' se il tipo non è congruo mostro msg d'errore ed esco dall'apertura progetto
' If Not bOkType Then
' MessageBox.Show(EgtMsg(61881), EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) 'Error
' Return
' End If
'End If
If Map.refSceneHostVM.MainController.OpenProject(sFilePath, False) Then
SectionXMaterial.SetType(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
' aggiorno le colonne in base al tipo progetto
Map.refRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
Map.refPartInRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
m_CurrProd = TempCurrProd
DbControllers.m_ProdController.LockByProdId(m_CurrProd.nProdId, True)
' seleziono primo gruppo
Map.refProjectVM.MachGroupPanelVM.SelFirstMachGroup()
'SectionXMaterial.SetType(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
'' aggiorno le colonne in base al tipo progetto
'Map.refRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
'Map.refPartInRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
'm_CurrProd = TempCurrProd
'DbControllers.m_ProdController.LockByProdId(m_CurrProd.nProdId, True)
'' carico lista macchine e macchina del progetto per il pulsante Reset Macchina del CALCPanel
'Map.refCALCPanelVM.LoadMachineList()
'' seleziono primo gruppo
'Map.refProjectVM.MachGroupPanelVM.SelFirstMachGroup()
End If
Else
MessageBox.Show(EgtMsg(61871))
@@ -317,6 +330,12 @@ Public Class ProdManagerVM
End If
' aggiorno pezzi su Db
DbControllers.m_ProdController.UpdateMachGroup(CurrProd.nProdId, MyMachGroupList)
' verifico se Reset Macchina modificato e nel caso aggiorno DB e CurrProj
If Map.refCALCPanelVM.IsMachineModified() Then
DbControllers.m_ProdController.UpdateMachine(Map.refProdManagerVM.CurrProd.nProdId, Map.refCALCPanelVM.SelectedMachine.Name)
Map.refProdManagerVM.CurrProd.SetMachine(Map.refCALCPanelVM.SelectedMachine.Name)
Map.refCALCPanelVM.ResetMachineModified()
End If
' se nuovo progetto
If m_CurrProd.bIsNew Then
' resetto stato new
@@ -27,6 +27,16 @@ Public Class ProjManagerVM
End Set
End Property
Private m_TempCurrProj As ProjFileVM
Friend Property TempCurrProj As ProjFileVM
Get
Return m_TempCurrProj
End Get
Set(value As ProjFileVM)
m_TempCurrProj = value
End Set
End Property
Private m_IsEnabled As Boolean
Public Property IsEnabled As Boolean
Get
@@ -198,13 +208,14 @@ Public Class ProjManagerVM
End If
End Sub
Private Function InitNewProject(ByRef nProjId As Integer, ByRef sProjectDir As String, nType As BWType) As Boolean
Private Function InitNewProject(ByRef nProjId As Integer, ByRef sProjectDir As String, nType As BWType, Machine As Machine) As Boolean
' richiedo indice nuovo progetto
nProjId = DbControllers.m_ProjController.GetNextIndex()
' salvo data creazione progetto
DbControllers.m_ProjController.Update(New ProjModel() With {.ProjId = nProjId,
.DtCreated = DateTime.Now(),
.PType = nType})
.PType = nType,
.Machine = If(Not IsNothing(Machine), Machine.Name, Nothing)})
If nProjId <= 0 Then Return False
sProjectDir = refMainWindowVM.MainWindowM.sProjsDir & "\" & nProjId.ToString("0000")
' creo cartella nuovo progetto
@@ -278,29 +289,26 @@ Public Class ProjManagerVM
Public Sub NewProject()
' verifico se progetto modificato, e chiedo se salvare
If Not ProjFileVM.VerifyProjectModification(CurrProj, ProjectType.PROJ) Then Return
' setto il tipo progetto in base al tipo macchina
' apro il dialog per scegliere la macchina e il tipo progetto a cui settare il nuovo progetto
Dim Machine As Machine = Nothing
Dim nType As BWType = BWType.NULL
If CurrentMachine.nType = Core.ConstBeam.MachineType.BOTH Then
' se tipo macchina è BOTH apro dialog per settare tipo progetto a Beam o a Wall
Dim ProjectTypeWndVM As New ProjectTypeWndVM()
Dim ProjectTypeWnd As New ProjectTypeWndV(Application.Current.MainWindow, ProjectTypeWndVM)
If ProjectTypeWnd.ShowDialog() Then
nType = ProjectTypeWndVM.nSelType
Else
Return
End If
ElseIf CurrentMachine.nType = Core.ConstBeam.MachineType.BEAM Then
nType = BWType.BEAM
ElseIf CurrentMachine.nType = Core.ConstBeam.MachineType.WALL Then
nType = BWType.WALL
Dim ProjectTypeWndVM As New ProjectTypeWndVM()
Dim ProjectTypeWnd As New ProjectTypeWndV(Application.Current.MainWindow, ProjectTypeWndVM)
If ProjectTypeWnd.ShowDialog() Then
Machine = ProjectTypeWndVM.SelMachine
nType = ProjectTypeWndVM.nSelType
Else
Return
End If
' creo nuovo progetto
If Map.refSceneHostVM.MainController.NewProject() Then
' inizializzo nuovo progetto
Dim nProjId As Integer = 0
Dim sProjDir As String = ""
InitNewProject(nProjId, sProjDir, nType)
InitNewProject(nProjId, sProjDir, nType, Machine)
SetCurrProj(nProjId)
' carico lista macchine e macchina del progetto per il pulsante Reset Macchina del CALCPanel
Map.refCALCPanelVM.LoadMachineList()
Dim sProjFileName As String = sProjDir & "\" & nProjId.ToString("0000") & ".nge"
' imposto ProjId di caricamento
m_nLoadingProjId = nProjId
@@ -350,7 +358,8 @@ Public Class ProjManagerVM
OpenProject(Nothing)
End Sub
Friend Sub OpenProject(TempCurrProj As ProjFileVM)
Friend Sub OpenProject(TempCurrPj As ProjFileVM)
m_TempCurrProj = TempCurrPj
' se la string è vuota
Dim OpenProjectFileDialogVM As OpenProjectFileDialogVM = Nothing
If IsNothing(TempCurrProj) Then
@@ -372,13 +381,15 @@ Public Class ProjManagerVM
End If
SectionXMaterial.SetType(TempCurrProj.nType)
If Map.refSceneHostVM.MainController.OpenProject(sFilePath, False) Then
' imposto macchina del progetto
Map.refMachinePanelVM.SelectedMachine = Map.refMachinePanelVM.MachineList.FirstOrDefault(Function(x) x.Name = TempCurrProj.sMachine)
' aggiorno le colonne in base al tipo progetto
Map.refRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
Map.refPartInRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
m_CurrProj = TempCurrProj
DbControllers.m_ProjController.LockByProjId(m_CurrProj.nProjId, True)
'' imposto macchina del progetto
'Map.refMachinePanelVM.SelectedMachine = Map.refMachinePanelVM.MachineList.FirstOrDefault(Function(x) x.Name = TempCurrProj.sMachine)
'' aggiorno le colonne in base al tipo progetto
'Map.refRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
'Map.refPartInRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
'm_CurrProj = TempCurrProj
'DbControllers.m_ProjController.LockByProjId(m_CurrProj.nProjId, True)
'' carico lista macchine e macchina del progetto per il pulsante Reset Macchina del CALCPanel
'Map.refCALCPanelVM.LoadMachineList()
End If
' aggiorno titolo
Map.refMainWindowVM.UpdateTitle()
@@ -461,6 +472,12 @@ Public Class ProjManagerVM
' se assemblato lo ripristino
If bShowBuilding Then Map.refProjectVM.BTLStructureVM.ShowBuilding(True, False)
If bShowSolid Then Map.refProjectVM.BTLStructureVM.ShowSolid(False)
' verifico se Reset Macchina modificato e nel caso aggiorno DB e CurrProj
If Map.refCALCPanelVM.IsMachineModified() Then
DbControllers.m_ProjController.UpdateMachine(Map.refProjManagerVM.CurrProj.nProjId, Map.refCALCPanelVM.SelectedMachine.Name)
Map.refProjManagerVM.CurrProj.SetMachine(Map.refCALCPanelVM.SelectedMachine.Name)
Map.refCALCPanelVM.ResetMachineModified()
End If
' aggiorno titolo
Map.refMainWindowVM.UpdateTitle()
NotifyPropertyChanged(NameOf(MruFileNames))
@@ -503,27 +520,24 @@ Public Class ProjManagerVM
Return
End If
End If
' setto il tipo progetto in base al tipo macchina
' apro il dialog per scegliere la macchina e il tipo progetto a cui settare il progetto importato
Dim Machine As Machine = Nothing
Dim nType As BWType = BWType.NULL
If CurrentMachine.nType = Core.ConstBeam.MachineType.BOTH Then
' se tipo macchina è BOTH apro dialog per settare tipo progetto a Beam o a Wall
Dim ProjectTypeWndVM As New ProjectTypeWndVM()
Dim ProjectTypeWnd As New ProjectTypeWndV(Application.Current.MainWindow, ProjectTypeWndVM)
If ProjectTypeWnd.ShowDialog() Then
nType = ProjectTypeWndVM.nSelType
Else
Return
End If
ElseIf CurrentMachine.nType = Core.ConstBeam.MachineType.BEAM Then
nType = BWType.BEAM
ElseIf CurrentMachine.nType = Core.ConstBeam.MachineType.WALL Then
nType = BWType.WALL
Dim ProjectTypeWndVM As New ProjectTypeWndVM()
Dim ProjectTypeWnd As New ProjectTypeWndV(Application.Current.MainWindow, ProjectTypeWndVM)
If ProjectTypeWnd.ShowDialog() Then
Machine = ProjectTypeWndVM.SelMachine
nType = ProjectTypeWndVM.nSelType
Else
Return
End If
' inizializzo nuovo progetto
Dim nProjId As Integer = 0
Dim sProjDir As String = ""
InitNewProject(nProjId, sProjDir, nType)
InitNewProject(nProjId, sProjDir, nType, Machine)
SetCurrProj(nProjId)
' carico lista macchine e macchina del progetto per il pulsante Reset Macchina del CALCPanel
Map.refCALCPanelVM.LoadMachineList()
' imposto ProjId di caricamento
m_nLoadingProjId = nProjId
' copio file BTL
@@ -727,7 +741,7 @@ Public Class ProjManagerVM
' inizializzo nuovo proj
Dim nNewProjId As Integer = 0
Dim sNewProjDir As String = ""
InitNewProject(nNewProjId, sNewProjDir, nType)
InitNewProject(nNewProjId, sNewProjDir, nType, Nothing)
NewProjIdList.Add(nNewProjId)
' imposto ProjId di caricamento
m_nLoadingProjId = nImportProjId
@@ -125,7 +125,7 @@ Public Class ProdFileVM
Dim sProjectDirPath As String = ""
sProjectDirPath = CurrProject.sProdDirPath
' verifico se progetto modificato, e chiedo se salvare
If EgtGetModified() OrElse CurrProject.bIsNew Then
If EgtGetModified() OrElse CurrProject.bIsNew OrElse Map.refCALCPanelVM.IsMachineModified() Then
Select Case MessageBox.Show(EgtMsg(61875), "", MessageBoxButton.YesNoCancel, MessageBoxImage.Question)
Case MessageBoxResult.Yes
' salvo proj
@@ -134,6 +134,7 @@ Public Class ProdFileVM
Return False
Case Else ' No
EgtResetModified()
Map.refCALCPanelVM.RevertToOriginalMachine()
If CurrProject.bIsNew Then
' lo elimino
Directory.Delete(sProjectDirPath, True)
@@ -113,7 +113,7 @@ Public Class ProjFileVM
Dim sProjectDirPath As String = ""
sProjectDirPath = CurrProject.sProjDirPath
' verifico se progetto modificato, e chiedo se salvare
If EgtGetModified() OrElse CurrProject.bIsNew Then
If EgtGetModified() OrElse CurrProject.bIsNew OrElse Map.refCALCPanelVM.IsMachineModified() Then
Select Case MessageBox.Show(EgtMsg(61875), "", MessageBoxButton.YesNoCancel, MessageBoxImage.Question)
Case MessageBoxResult.Yes
' salvo proj
@@ -122,6 +122,7 @@ Public Class ProjFileVM
Return False
Case Else ' No
EgtResetModified()
Map.refCALCPanelVM.RevertToOriginalMachine()
If CurrProject.bIsNew Then
' lo elimino
If Directory.Exists(sProjectDirPath) Then
@@ -6,6 +6,7 @@
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}"
WindowStyle="None" ResizeMode="NoResize"
SizeToContent="WidthAndHeight"
MinWidth="500"
WindowStartupLocation="CenterOwner"
IsClosable="False"
IsMinimizable="False"
@@ -35,7 +36,29 @@
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Choose_Msg}"
<TextBlock Text="{Binding ChooseMachine_Msg}"
Style="{StaticResource OptionTextBlock}"
Grid.Row="0" Grid.ColumnSpan="2"/>
<Rectangle Height="22" Grid.Row="1"/>
<ComboBox ItemsSource="{Binding MachineList}" DisplayMemberPath="Name"
SelectedItem="{Binding SelMachine}" SelectedValuePath="Name"
Grid.Row="2"
Style="{StaticResource BtlData_ComboBox}"/>
</Grid>
<Grid HorizontalAlignment="Center"
Grid.Row="1"
Margin="15"
Visibility="{Binding IsBoth_Visibility}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding ChooseType_Msg}"
Style="{StaticResource OptionTextBlock}"
Grid.Row="0" Grid.ColumnSpan="2"/>
<Rectangle Height="22" Grid.Row="1"/>
@@ -11,6 +11,40 @@ Public Class ProjectTypeWndVM
Friend Event m_CloseWindow(bDialogResult As Boolean)
Private m_MachineList As ObservableCollection(Of Machine) = Map.refMachinePanelVM.MachineList
Public ReadOnly Property MachineList As ObservableCollection(Of Machine)
Get
Return m_MachineList
End Get
End Property
Private m_SelMachine As Machine = Nothing
Public Property SelMachine As Machine
Get
Return m_SelMachine
End Get
Set(value As Machine)
If value IsNot m_SelMachine Then
m_SelMachine = value
Dim nMachType As MachineType = DirectCast(SelMachine, MyMachine).nType
IsBoth_Visibility = If(nMachType = MachineType.BOTH, Visibility.Visible, Visibility.Collapsed)
End If
End Set
End Property
Private m_IsBoth_Visibility As Visibility = Visibility.Collapsed
Public Property IsBoth_Visibility As Visibility
Get
Return m_IsBoth_Visibility
End Get
Set(value As Visibility)
If value <> m_IsBoth_Visibility Then
m_IsBoth_Visibility = value
NotifyPropertyChanged(NameOf(IsBoth_Visibility))
End If
End Set
End Property
Private m_TypeList As New ObservableCollection(Of BWType)({BWType.BEAM, BWType.WALL})
Public ReadOnly Property TypeList As ObservableCollection(Of BWType)
Get
@@ -37,7 +71,13 @@ Public Class ProjectTypeWndVM
#Region "MESSAGES"
Public ReadOnly Property Choose_Msg As String
Public ReadOnly Property ChooseMachine_Msg As String
Get
Return EgtMsg(61884)
End Get
End Property
Public ReadOnly Property ChooseType_Msg As String
Get
Return EgtMsg(61879)
End Get
@@ -59,12 +99,28 @@ Public Class ProjectTypeWndVM
End Property
Public Sub Ok()
Select Case nSelType
Case BWType.BEAM, BWType.WALL
If Not IsNothing(SelMachine) Then
Dim nMachType As MachineType = DirectCast(SelMachine, MyMachine).nType
' se la macchina selezionata è sia travi che pareti valuto anche tipo scelto di progetto da aprire/importare
If nMachType = MachineType.BOTH Then
Select Case nSelType
Case BWType.BEAM, BWType.WALL
Map.refMachinePanelVM.SelectedMachine = MachineList(MachineList.IndexOf(SelMachine))
RaiseEvent m_CloseWindow(True)
Case Else
' se non seleziono nessuna tipo progetto lo segnalo con un MessageBox
MessageBox.Show(EgtMsg(61880), EgtMsg(30009))
End Select
Else
' altrimenti setto la macchina e il tipo associato ad essa
Map.refMachinePanelVM.SelectedMachine = MachineList(MachineList.IndexOf(SelMachine))
nSelType = nMachType
RaiseEvent m_CloseWindow(True)
Case Else
MessageBox.Show(EgtMsg(61880), EgtMsg(30009))
End Select
End If
Else
' se non seleziono nessuna macchina lo segnalo con un MessageBox
MessageBox.Show(EgtMsg(61880), EgtMsg(30009))
End If
End Sub
#End Region ' Ok
@@ -538,7 +538,31 @@ Public Class MySceneHostVM
If Not IsNothing(PjFileVM.ProjFileM) AndAlso Not IsNothing(PjFileVM.sProjPath) Then Map.refProjManagerVM.m_MruFiles.Add(PjFileVM.sProjPath)
End If
End If
If ProjectType = ProjectType.PROD Then Map.refProdManagerVM.m_MruFiles.Add(sFile)
If ProjectType = ProjectType.PROJ Then
' imposto macchina del progetto
Map.refMachinePanelVM.SelectedMachine = Map.refMachinePanelVM.MachineList.FirstOrDefault(Function(x) x.Name = Map.refProjManagerVM.TempCurrProj.sMachine)
' aggiorno le colonne in base al tipo progetto
Map.refRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
Map.refPartInRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
Map.refProjManagerVM.CurrProj = Map.refProjManagerVM.TempCurrProj
DbControllers.m_ProjController.LockByProjId(Map.refProjManagerVM.CurrProj.nProjId, True)
' carico lista macchine e macchina del progetto per il pulsante Reset Macchina del CALCPanel
Map.refCALCPanelVM.LoadMachineList()
ElseIf ProjectType = ProjectType.PROD Then
Map.refProdManagerVM.m_MruFiles.Add(sFile)
' imposto macchina del progetto
Map.refMachinePanelVM.SelectedMachine = Map.refMachinePanelVM.MachineList.FirstOrDefault(Function(x) x.Name = Map.refProdManagerVM.TempCurrProd.sMachine)
SectionXMaterial.SetType(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
' aggiorno le colonne in base al tipo progetto
Map.refRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
Map.refPartInRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
Map.refProdManagerVM.CurrProd = Map.refProdManagerVM.TempCurrProd
DbControllers.m_ProdController.LockByProdId(Map.refProdManagerVM.CurrProd.nProdId, True)
' carico lista macchine e macchina del progetto per il pulsante Reset Macchina del CALCPanel
Map.refCALCPanelVM.LoadMachineList()
' seleziono primo gruppo
Map.refProjectVM.MachGroupPanelVM.SelFirstMachGroup()
End If
Else
' in base al tipo progetto rimuovo il file in apertura dalla lista degli MRU
If ProjectType = ProjectType.PROJ Then