913 lines
44 KiB
VB.net
913 lines
44 KiB
VB.net
Imports System.IO
|
|
Imports System.Windows.Threading
|
|
Imports EgtBEAMWALL.Core
|
|
Imports EgtBEAMWALL.Core.ConstBeam
|
|
Imports EgtBEAMWALL.DataLayer.DatabaseModels
|
|
Imports EgtUILib
|
|
Imports EgtWPFLib5
|
|
|
|
Public Class MainMenuVM
|
|
Inherits VMBase
|
|
|
|
#Region "FIELDS & PROPERTIES"
|
|
|
|
Private m_OpenPage_Timer As New DispatcherTimer
|
|
Private m_bOpenPage As Boolean = False
|
|
Private m_nPageToOpen As Pages = Pages.MACHINING
|
|
|
|
Private m_MainMenu_IsEnabled As Boolean = True
|
|
Public ReadOnly Property MainMenu_IsEnabled As Boolean
|
|
Get
|
|
Return m_MainMenu_IsEnabled
|
|
End Get
|
|
End Property
|
|
|
|
Private m_SendFeedbackIsEnabled As Boolean = True
|
|
Public ReadOnly Property SendFeedbackIsEnabled As Boolean
|
|
Get
|
|
Return m_SelPage = Pages.VIEW Or m_SelPage = Pages.MACHINING Or m_SelPage = Pages.ONLYPRODPAGE
|
|
End Get
|
|
End Property
|
|
|
|
Public Property View_IsChecked As Boolean
|
|
Get
|
|
Return m_SelPage = Pages.VIEW
|
|
End Get
|
|
Set(value As Boolean)
|
|
If value Then
|
|
If Not IsNothing(ProjectManagerVM.CurrProj) AndAlso Not IsNothing(ProjectManagerVM.CurrProd) AndAlso
|
|
ProjectManagerVM.CurrProj.nProdId = ProjectManagerVM.CurrProd.nProdId Then
|
|
ProjectManagerVM.CurrProj.SetReloadProject(False)
|
|
End If
|
|
SelPage = Pages.VIEW
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public Property Machining_IsChecked As Boolean
|
|
Get
|
|
Return m_SelPage = Pages.MACHINING
|
|
End Get
|
|
Set(value As Boolean)
|
|
If value Then
|
|
If Not IsNothing(ProjectManagerVM.CurrProj) AndAlso Not IsNothing(ProjectManagerVM.CurrProd) AndAlso
|
|
ProjectManagerVM.CurrProj.nProdId = ProjectManagerVM.CurrProd.nProdId Then
|
|
ProjectManagerVM.CurrProd.SetReloadProject(False)
|
|
End If
|
|
SelPage = Pages.MACHINING
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public Property OnlyProdPage_IsChecked As Boolean
|
|
Get
|
|
Return m_SelPage = Pages.ONLYPRODPAGE
|
|
End Get
|
|
Set(value As Boolean)
|
|
If value Then SelPage = Pages.ONLYPRODPAGE
|
|
End Set
|
|
End Property
|
|
|
|
Public Property Supervisor_IsChecked As Boolean
|
|
Get
|
|
Return m_SelPage = Pages.SUPERVISOR
|
|
End Get
|
|
Set(value As Boolean)
|
|
If value Then SelPage = Pages.SUPERVISOR
|
|
End Set
|
|
End Property
|
|
|
|
Public Property Config_IsChecked As Boolean
|
|
Get
|
|
Return m_SelPage = Pages.CONFIG
|
|
End Get
|
|
Set(value As Boolean)
|
|
If value Then SelPage = Pages.CONFIG
|
|
End Set
|
|
End Property
|
|
|
|
Private m_Supervisor_Visibility As Visibility
|
|
Public ReadOnly Property Supervisor_Visibility As Visibility
|
|
Get
|
|
Return m_Supervisor_Visibility
|
|
End Get
|
|
End Property
|
|
|
|
Private m_SelPage As Integer = -1
|
|
Public Property SelPage As Integer
|
|
Get
|
|
Return m_SelPage
|
|
End Get
|
|
Set(value As Integer)
|
|
' lancio selezione pagina con verifica file modificato
|
|
SetSelPage(value)
|
|
End Set
|
|
End Property
|
|
' funzione che permette di cambiare pagina
|
|
' bVerifyModification: se vero verifica modifiche su file e chiede di salvare
|
|
Friend Sub SetSelPage(Page As Pages, Optional bVerifyModification As Boolean = True)
|
|
Dim bOk As Boolean = True
|
|
' Esco dallo stato corrente
|
|
Select Case m_SelPage
|
|
Case Pages.VIEW
|
|
bOk = ExitVIEW(bVerifyModification)
|
|
Case Pages.MACHINING
|
|
bOk = ExitMACHINING(bVerifyModification)
|
|
Case Pages.CONFIG
|
|
bOk = ExitCONFIG()
|
|
Case Pages.ONLYPRODPAGE
|
|
bOk = ExitONLYPRODPAGE(bVerifyModification)
|
|
End Select
|
|
If bOk Then
|
|
' Entro nel nuovo stato
|
|
m_SelPage = Page
|
|
Select Case m_SelPage
|
|
Case Pages.VIEW
|
|
' Map.refMachGroupPanelVM.SetMachGroupState(False)
|
|
InitVIEW()
|
|
'Map.refTopCommandBarVM.IsEnabled = False
|
|
Case Pages.MACHINING
|
|
' Map.refMachGroupPanelVM.SetMachGroupState(True)
|
|
InitMACHINING()
|
|
'Map.refTopCommandBarVM.IsEnabled = True
|
|
Case Pages.CONFIG
|
|
InitCONFIG()
|
|
'Map.refMachGroupPanelVM.SetMachGroupState(False)
|
|
'Map.refCONFIGTabVM.InitCONFIGation()
|
|
'Map.refTopCommandBarVM.IsEnabled = False
|
|
Case Pages.ONLYPRODPAGE
|
|
InitONLYPRODPAGE()
|
|
End Select
|
|
End If
|
|
' aggiorno visualizzazione RadioButton
|
|
NotifyPropertyChanged(NameOf(View_IsChecked))
|
|
NotifyPropertyChanged(NameOf(Machining_IsChecked))
|
|
NotifyPropertyChanged(NameOf(Supervisor_IsChecked))
|
|
NotifyPropertyChanged(NameOf(Config_IsChecked))
|
|
NotifyPropertyChanged(NameOf(OnlyProdPage_IsChecked))
|
|
End Sub
|
|
|
|
Public ReadOnly Property OnlyProdPage_Visibility As Visibility
|
|
Get
|
|
Return If(Map.refMainWindowVM.MainWindowM.bOnlyProd, Visibility.Visible, Visibility.Collapsed)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property ViewOptimizer_Visibility As Visibility
|
|
Get
|
|
Return If(Map.refMainWindowVM.MainWindowM.bOnlyProd, Visibility.Collapsed, Visibility.Visible)
|
|
End Get
|
|
End Property
|
|
|
|
#Region "Messages"
|
|
|
|
Public ReadOnly Property Viewer_Msg As String
|
|
Get
|
|
Return EgtMsg(61830)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property Optimizer_Msg As String
|
|
Get
|
|
Return EgtMsg(61831)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property Configuration_Msg As String
|
|
Get
|
|
Return EgtMsg(61832)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property Supervisor_Msg As String
|
|
Get
|
|
Return EgtMsg(62500)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property OnlyProdPage_Msg As String
|
|
Get
|
|
Return EgtMsg(61896)
|
|
End Get
|
|
End Property
|
|
|
|
#Region "ToolTip"
|
|
|
|
'Proprietà ToolTip
|
|
Public ReadOnly Property SendFeedbackToolTip As String
|
|
Get
|
|
Return EgtMsg(MSG_TOPCOMMANDBAR + 13)
|
|
End Get
|
|
End Property
|
|
|
|
#End Region ' ToolTip
|
|
|
|
#End Region ' Messages
|
|
|
|
' Definizione comandi
|
|
Private m_cmdSupervisor As ICommand
|
|
Private m_cmdSendFeedback As ICommand
|
|
|
|
#End Region ' Fields & Properties
|
|
|
|
#Region "CONSTRUCTOR"
|
|
|
|
Sub New()
|
|
' Creo riferimento a questa classe in EgtCAM5Map
|
|
Map.SetRefMainMenuVM(Me)
|
|
' abilito supervisore
|
|
If Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.SUPERVISOR) Then
|
|
m_Supervisor_Visibility = Visibility.Visible
|
|
Else
|
|
m_Supervisor_Visibility = Visibility.Collapsed
|
|
End If
|
|
' imposto timer di apertura da ottimizzatore
|
|
m_OpenPage_Timer.Interval = TimeSpan.FromMilliseconds(500)
|
|
AddHandler m_OpenPage_Timer.Tick, AddressOf OpenPage_Tick
|
|
m_OpenPage_Timer.Start()
|
|
End Sub
|
|
|
|
#End Region ' CONSTRUCTOR
|
|
|
|
#Region "METHODS"
|
|
|
|
Friend Sub SetMainMenuIsEnabled(bIsEnabled As Boolean)
|
|
m_MainMenu_IsEnabled = bIsEnabled
|
|
NotifyPropertyChanged(NameOf(MainMenu_IsEnabled))
|
|
End Sub
|
|
|
|
Private Function InitVIEW() As Boolean
|
|
Map.refProjectVM.SetBottomPanel_Visibility(True)
|
|
Map.refProjectVM.SetLeftPanel_Visibility(True)
|
|
'Map.refLeftPanelVM.UpdateView()
|
|
If Not IsNothing(Map.refFeatureListManagerVM) Then Map.refFeatureListManagerVM.UpdateView()
|
|
If Not IsNothing(Map.refBTLPartManagerVM) Then Map.refBTLPartManagerVM.UpdateView()
|
|
Map.refProjectVM.SetFeatureManager_Visibility(True)
|
|
Map.refProjectVM.SetTopPanel_Visibility(False)
|
|
Map.refProjectVM.SetShowBeamPanel_Visibility(True)
|
|
Map.refProjectVM.SetProjManager_Visibility(True)
|
|
Map.refProjectVM.SetProdManager_Visibility(False)
|
|
Map.refProjectVM.SetOnlyProdManager_Visibility(False)
|
|
Map.refProjectVM.SetOnlyProdLeftPanel_Visibility(False)
|
|
Map.refProjectVM.SetOnlyProdOptimizePanel_Visibility(False)
|
|
Map.refProjectVM.SetOptimizePanel_Visibility(Not IsNothing(Map.refProjectVM.BTLStructureVM) AndAlso Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.WALL AndAlso Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NESTING_AUTO))
|
|
Map.refProjectVM.NotifyAllPanelVisibility()
|
|
Map.refCALCPanelVM.SetChooseMachineBtn_Visibility(Map.refMainMenuVM.SelPage = Pages.VIEW AndAlso Map.refMachinePanelVM.MachineList.Count > 1 AndAlso GetMainPrivateProfileInt(S_MACH, K_CHANGEMACH, 0) = 1)
|
|
Map.refStatisticsTimePanelVM.SetStatisticsTimePanel_Visibility()
|
|
If Not IsNothing(Map.refFeatureListVM.colFeature_Do) Then
|
|
Map.refFeatureListVM.colFeature_Do.ColumnVisibility = Visibility.Visible
|
|
End If
|
|
' aggiorno la visibilità delle colonne
|
|
For Each col In Map.refFeatureListVM.FeatureColumns
|
|
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
|
|
Next
|
|
For Each col In Map.refPartListVM.PartColumns
|
|
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
|
|
Next
|
|
For Each col In Map.refStatisticsVM.StatisticsColumns
|
|
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
|
|
Next
|
|
For Each col In Map.refPParameterListVM.PParameterListColumns
|
|
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
|
|
Next
|
|
For Each col In Map.refQParameterListVM.QParameterListColumns
|
|
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
|
|
Next
|
|
' imposto dimensioni colonne/righe della Grid
|
|
DimensionsIniFile.ReadGridDimensions(ConstDims.PROJECT_VIEW, Map.refProjectVM.GridDims)
|
|
DimensionsIniFile.ReadGridDimensions(ConstDims.LEFTPANEL_VIEW, Map.refLeftPanelVM.GridDims)
|
|
' apro progetto proj
|
|
If Not IsNothing(ProjectManagerVM.CurrProj) Then
|
|
If ProjectManagerVM.CurrProj.bReloadProject OrElse Map.refConfigurationPageVM.QParametersModified Then
|
|
LoadingWndHelper.UpdateLoadingWnd(ActiveIds.GOTOPROJ, 2, EgtMsg(63005), 10, 100) ' Loading parts
|
|
Map.refProjManagerVM.OpenProject(ProjectManagerVM.CurrProj)
|
|
' aggiorno le colonne in base al tipo progetto
|
|
If Not IsNothing(Map.refProjectVM.BTLStructureVM) Then
|
|
Map.refRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
|
|
Map.refFeatureInPartInRawPartListVM.UpdateColumns(CurrentMachine.nType)
|
|
Map.refTopPanelVM.ManageQParamsRowVisibility(Map.refProjectVM.BTLStructureVM.nPROJTYPE <> BWType.BEAM)
|
|
Map.refPartInRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
|
|
Else
|
|
Map.refRawPartListVM.UpdateColumns(BWType.BEAM)
|
|
Map.refFeatureInPartInRawPartListVM.UpdateColumns(CurrentMachine.nType)
|
|
Map.refTopPanelVM.ManageQParamsRowVisibility(BWType.BEAM)
|
|
Map.refPartInRawPartListVM.UpdateColumns(BWType.BEAM)
|
|
End If
|
|
' resetto modifica parametri Q default
|
|
Map.refConfigurationPageVM.ResetQParametersModified()
|
|
DbControllers.m_ProjController.LockByProjId(ProjectManagerVM.CurrProj.nProjId, True, Map.refMainWindowVM.MainWindowM.GetKeyNumber())
|
|
Map.refProjManagerVM.NotifyPropertyChanged(NameOf(Map.refProjManagerVM.MruFileNames))
|
|
Else
|
|
LoadingWndHelper.UpdateLoadingWnd(ActiveIds.GOTOPROJ, 2, EgtMsg(63005), 10, 100) ' Loading parts
|
|
' recupero indice di modifica progetto
|
|
Dim CommIndex As Integer = -1
|
|
Dim ActiveSessionList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetProd(m_SupervisorId)
|
|
For Each ActiveSession In ActiveSessionList
|
|
If ActiveSession.ItemId = ProjectManagerVM.CurrProj.nProdId Then
|
|
CommIndex = ActiveSession.Index
|
|
End If
|
|
Next
|
|
LoadingWndHelper.UpdateLoadingWnd(ActiveIds.GOTOPROD, 3, EgtMsg(63002), 30, 100) ' Loading machining groups
|
|
' verifico se il prod di provenienza ha piu' proj
|
|
If Not IsNothing(ProjectManagerVM.CurrProd) AndAlso ProjectManagerVM.CurrProd.nProjIdList.Count > 1 Then
|
|
' se si rigenero BTLStructure
|
|
Map.refProjectVM.BTLStructureVM = New BTLStructureVM(BTLStructureM.CreateBTLStructure(ProjectManagerVM.CurrProj.nProjId))
|
|
' carico filtri di ricerca
|
|
Map.refProjectVM.BTLStructureVM.LoadFilters()
|
|
End If
|
|
' fisso indice sessione di comunicazione
|
|
If CommIndex > -1 Then
|
|
ProjectManagerVM.CurrProj.SetModificationIndex(CommIndex)
|
|
End If
|
|
' mostro tutti i pezzi
|
|
Map.refShowBeamPanelVM.ShowAll(True)
|
|
ProjectManagerVM.CurrProj.SetReloadProject(True)
|
|
End If
|
|
' aggiorno titolo
|
|
Map.refMainWindowVM.UpdateTitle()
|
|
DbControllers.m_ProjController.LockByProjId(ProjectManagerVM.CurrProj.nProjId, True, Map.refMainWindowVM.MainWindowM.GetKeyNumber())
|
|
Else
|
|
Map.refSceneHostVM.MainController.NewProject()
|
|
Map.refProjectVM.BTLStructureVM = Nothing
|
|
Map.refProjectVM.MachGroupPanelVM = Nothing
|
|
End If
|
|
Map.refMainWindowVM.NotifyPropertyChanged(NameOf(Map.refMainWindowVM.nSelTabPage))
|
|
Map.refMainMenuVM.NotifyPropertyChanged(NameOf(Map.refMainMenuVM.SendFeedbackIsEnabled))
|
|
Map.refInstrumentPanelVM.NotifyPropertyChanged(NameOf(Map.refInstrumentPanelVM.ChangeParam_Visibility))
|
|
Map.refInstrumentPanelVM.NotifyPropertyChanged(NameOf(Map.refInstrumentPanelVM.ChangeMaterial_Visibility))
|
|
Map.refInstrumentPanelVM.NotifyPropertyChanged(NameOf(Map.refInstrumentPanelVM.Statistic_Visibility))
|
|
Map.refInstrumentPanelVM.NotifyPropertyChanged(NameOf(Map.refInstrumentPanelVM.VisStatistic_Visibility))
|
|
Map.refInstrumentPanelVM.NotifyPropertyChanged(NameOf(Map.refInstrumentPanelVM.OtStatistic_Visibility))
|
|
Return True
|
|
End Function
|
|
|
|
Private Function ExitVIEW(bVerifyModification As Boolean) As Boolean
|
|
' verifico se progetto modificato, e chiedo se salvare
|
|
If bVerifyModification Then
|
|
If Not ProjFileVM.VerifyProjectModification(ProjectManagerVM.CurrProj, ProjectType.PROJ) Then
|
|
Return False
|
|
End If
|
|
End If
|
|
' resetto eventuale visualizzazione statistiche
|
|
Map.refInstrumentPanelVM.ResetStatisticsIsChecked()
|
|
Map.refProjectVM.SetBottomPanel_Visibility(False)
|
|
Map.refProjectVM.SetLeftPanel_Visibility(True)
|
|
Map.refProjectVM.SetFeatureManager_Visibility(False)
|
|
Map.refProjectVM.SetTopPanel_Visibility(True)
|
|
Map.refProjectVM.SetShowBeamPanel_Visibility(False)
|
|
Map.refProjectVM.SetProjManager_Visibility(False)
|
|
Map.refProjectVM.SetOnlyProdManager_Visibility(True)
|
|
Map.refProjectVM.SetOnlyProdLeftPanel_Visibility(True)
|
|
Map.refProjectVM.SetOnlyProdOptimizePanel_Visibility(True)
|
|
Map.refProjectVM.SetProdManager_Visibility(True)
|
|
Map.refProjectVM.SetOptimizePanel_Visibility(True)
|
|
Map.refCALCPanelVM.SetChooseMachine_Visibility(False)
|
|
Return True
|
|
End Function
|
|
|
|
Private Function InitMACHINING() As Boolean
|
|
' imposto dimensioni colonne/righe della Grid
|
|
DimensionsIniFile.ReadGridDimensions(ConstDims.PROJECT_OPTIMIZER, Map.refProjectVM.GridDims)
|
|
DimensionsIniFile.ReadGridDimensions(ConstDims.LEFTPANEL_OPTIMIZER, Map.refLeftPanelVM.GridDims)
|
|
' inizializzo gruppi di lavorazione
|
|
If Not IsNothing(ProjectManagerVM.CurrProd) AndAlso Not IsNothing(ProjectManagerVM.CurrProd.nProdId) AndAlso ProjectManagerVM.CurrProd.nProdId > 0 Then
|
|
If File.Exists(ProjectManagerVM.CurrProd.sProdPath) Then
|
|
' apro progetto
|
|
If ProjectManagerVM.CurrProd.bReloadProject OrElse Map.refConfigurationPageVM.QParametersModified Then
|
|
LoadingWndHelper.UpdateLoadingWnd(ActiveIds.GOTOPROD, 2, EgtMsg(63005), 10, 50) ' Loading parts
|
|
Map.refProdManagerVM.TempCurrProd = ProjectManagerVM.CurrProd
|
|
If Map.refSceneHostVM.MainController.OpenProject(ProjectManagerVM.CurrProd.sProdPath, False) Then
|
|
' aggiorno le colonne in base al tipo progetto
|
|
Map.refRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
|
|
Map.refFeatureInPartInRawPartListVM.UpdateColumns(CurrentMachine.nType)
|
|
Map.refTopPanelVM.ManageQParamsRowVisibility(Map.refProjectVM.BTLStructureVM.nPROJTYPE <> BWType.BEAM)
|
|
Map.refPartInRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
|
|
' resetto modifica parametri Q default
|
|
Map.refConfigurationPageVM.ResetQParametersModified()
|
|
DbControllers.m_ProdController.LockByProdId(ProjectManagerVM.CurrProd.nProdId, True, Map.refMainWindowVM.MainWindowM.GetKeyNumber())
|
|
Map.refProdManagerVM.NotifyPropertyChanged(NameOf(Map.refProdManagerVM.MruFileNames))
|
|
End If
|
|
Else
|
|
LoadingWndHelper.UpdateLoadingWnd(ActiveIds.GOTOPROD, 2, EgtMsg(63005), 10, 30) ' Loading parts
|
|
' mostro tutti i pezzi
|
|
Map.refShowBeamPanelVM.ShowAll(False)
|
|
' verifico se il prod ha piu' proj
|
|
If ProjectManagerVM.CurrProd.nProjIdList.Count > 1 Then
|
|
' se si rigenero BTLStructure
|
|
Map.refProjectVM.BTLStructureVM = New BTLStructureVM(BTLStructureM.CreateBTLStructure(0))
|
|
' carico filtri di ricerca
|
|
Map.refProjectVM.BTLStructureVM.LoadFilters()
|
|
End If
|
|
' recupero indice di modifica progetto
|
|
Dim CommIndex As Integer = -1
|
|
Dim ActiveSessionList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetProd(m_SupervisorId)
|
|
For Each ActiveSession In ActiveSessionList
|
|
If ActiveSession.ItemId = ProjectManagerVM.CurrProd.nProdId Then
|
|
CommIndex = ActiveSession.Index
|
|
End If
|
|
Next
|
|
LoadingWndHelper.UpdateLoadingWnd(ActiveIds.GOTOPROD, 3, EgtMsg(63002), 30, 100) ' Loading machining groups
|
|
' carico lista dei MachGroup
|
|
Map.refProjectVM.MachGroupPanelVM = New MyMachGroupPanelVM(MyMachGroupPanelM.CreateMyMachGroupPanel(Map.refMachinePanelVM.MachineList.ToList()))
|
|
' fisso indice sessione di comunicazione
|
|
If CommIndex > -1 Then
|
|
ProjectManagerVM.CurrProd.SetModificationIndex(CommIndex)
|
|
End If
|
|
ProjectManagerVM.CurrProd.SetReloadProject(True)
|
|
End If
|
|
'DbControllers.m_ProdController.ResetController()
|
|
' se Warehouse di tipo Medium e piu' di un progetto collegato
|
|
Dim nDefault As Integer = 2
|
|
If GetMainPrivateProfileInt(S_WAREHOUSE, EgtBEAMWALL.Core.ConstIni.K_TYPE, nDefault) = WarehouseType.MEDIUM AndAlso ProjectManagerVM.CurrProd.nProjIdList.Count > 1 Then
|
|
' confronto le Sezioni del BTL importato con quelle in Warehouse
|
|
WarehouseWndVM.UpdateSectionXMaterial()
|
|
End If
|
|
' aggiorno titolo
|
|
Map.refMainWindowVM.UpdateTitle()
|
|
DbControllers.m_ProdController.LockByProdId(ProjectManagerVM.CurrProd.nProdId, True, Map.refMainWindowVM.MainWindowM.GetKeyNumber())
|
|
' controllo se devo lanciare verifica perche' importato
|
|
Dim bGetVerifyResult As Boolean = False
|
|
Dim bVerifyMach As Boolean = False
|
|
Dim nBTLInfoLayerId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, BTLINFO)
|
|
While nBTLInfoLayerId <> GDB_ID.NULL
|
|
If EgtGetInfo(nBTLInfoLayerId, IMP_VERIFYMACHGROUP, bGetVerifyResult) AndAlso bGetVerifyResult Then
|
|
If Not bVerifyMach Then bVerifyMach = True
|
|
EgtSetInfo(nBTLInfoLayerId, IMP_VERIFYMACHGROUP, False)
|
|
End If
|
|
nBTLInfoLayerId = EgtGetNextName(nBTLInfoLayerId, BTLINFO)
|
|
End While
|
|
If bVerifyMach Then
|
|
Map.refCALCPanelVM.VerifyAll()
|
|
End If
|
|
' seleziono prima barra
|
|
Map.refProjectVM.MachGroupPanelVM.SelFirstMachGroup()
|
|
Else
|
|
MessageBox.Show(EgtMsg(61871))
|
|
End If
|
|
Else
|
|
Map.refSceneHostVM.MainController.NewProject()
|
|
Map.refProjectVM.BTLStructureVM = Nothing
|
|
Map.refProjectVM.MachGroupPanelVM = Nothing
|
|
End If
|
|
' aggiorno lista possibili nesting
|
|
Map.refOptimizePanelVM.UpdateOriginTypeList(EgtGetFirstNameInGroup(GDB_ID.ROOT, "RawParts") <> GDB_ID.NULL)
|
|
' aggiorno visibilita' degli elementi grafici
|
|
Map.refMainWindowVM.NotifyPropertyChanged(NameOf(Map.refMainWindowVM.nSelTabPage))
|
|
Map.refMainMenuVM.NotifyPropertyChanged(NameOf(Map.refMainMenuVM.SendFeedbackIsEnabled))
|
|
Map.refInstrumentPanelVM.NotifyPropertyChanged(NameOf(Map.refInstrumentPanelVM.ChangeParam_Visibility))
|
|
Map.refInstrumentPanelVM.NotifyPropertyChanged(NameOf(Map.refInstrumentPanelVM.ChangeMaterial_Visibility))
|
|
Map.refInstrumentPanelVM.NotifyPropertyChanged(NameOf(Map.refInstrumentPanelVM.Statistic_Visibility))
|
|
Map.refInstrumentPanelVM.NotifyPropertyChanged(NameOf(Map.refInstrumentPanelVM.VisStatistic_Visibility))
|
|
Map.refInstrumentPanelVM.NotifyPropertyChanged(NameOf(Map.refInstrumentPanelVM.OtStatistic_Visibility))
|
|
Map.refTopPanelVM.NotifyPropertyChanged(NameOf(Map.refPartInRawPartManagerVM.MovePart_Visibility))
|
|
Map.refProjectVM.SetBottomPanel_Visibility(False)
|
|
Map.refProjectVM.SetLeftPanel_Visibility(True)
|
|
'Map.refLeftPanelVM.UpdateView()
|
|
If Not IsNothing(Map.refFeatureListManagerVM) Then Map.refFeatureListManagerVM.UpdateView()
|
|
If Not IsNothing(Map.refBTLPartManagerVM) Then Map.refBTLPartManagerVM.UpdateView()
|
|
Map.refProjectVM.SetFeatureManager_Visibility(False)
|
|
Map.refProjectVM.SetTopPanel_Visibility(True)
|
|
Map.refProjectVM.SetShowBeamPanel_Visibility(False)
|
|
Map.refProjectVM.SetProjManager_Visibility(False)
|
|
Map.refProjectVM.SetProdManager_Visibility(True)
|
|
Map.refProjectVM.SetOnlyProdManager_Visibility(False)
|
|
Map.refProjectVM.SetOnlyProdLeftPanel_Visibility(False)
|
|
Map.refProjectVM.SetOnlyProdOptimizePanel_Visibility(False)
|
|
Map.refProjectVM.NotifyAllPanelVisibility()
|
|
Map.refCALCPanelVM.SetChooseMachineBtn_Visibility(False)
|
|
Map.refTopPanelVM.UpdateQParameterVisibility()
|
|
Map.refRawPartManagerVM.UpdateMovePartInRawPartVisibility()
|
|
Map.refStatisticsTimePanelVM.SetStatisticsTimePanel_Visibility()
|
|
' aggiorno la visibilità delle colonne
|
|
For Each col In Map.refFeatureListVM.FeatureColumns
|
|
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
|
|
Next
|
|
For Each col In Map.refRawPartListVM.RawPartColumns
|
|
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
|
|
Next
|
|
For Each col In Map.refFeatureInPartInRawPartListVM.FeatureInPartInRawPartColumns
|
|
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
|
|
Next
|
|
For Each col In Map.refPartInRawPartListVM.PartInRawPartColumns
|
|
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
|
|
Next
|
|
For Each col In Map.refStatisticsVM.OptimizerStatisticsColumns
|
|
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
|
|
Next
|
|
If Not IsNothing(Map.refFeatureListVM.colFeature_Do) Then
|
|
Map.refFeatureListVM.colFeature_Do.ColumnVisibility = Visibility.Collapsed
|
|
End If
|
|
Map.refProjectVM.SetOptimizePanel_Visibility(True)
|
|
Return True
|
|
End Function
|
|
|
|
Private Function ExitMACHINING(bVerifyModification As Boolean) As Boolean
|
|
' verifico se progetto modificato, e chiedo se salvare
|
|
If bVerifyModification Then
|
|
If ProdFileVM.VerifyProjectModification(ProjectManagerVM.CurrProd) = MessageBoxResult.Cancel Then
|
|
Return False
|
|
End If
|
|
End If
|
|
' resetto eventuale visualizzazione statistiche
|
|
Map.refInstrumentPanelVM.ResetStatisticsIsChecked()
|
|
Map.refProjectVM.SetBottomPanel_Visibility(True)
|
|
Map.refProjectVM.SetLeftPanel_Visibility(False)
|
|
Map.refProjectVM.SetFeatureManager_Visibility(True)
|
|
Map.refProjectVM.SetTopPanel_Visibility(False)
|
|
Map.refProjectVM.SetShowBeamPanel_Visibility(True)
|
|
Map.refProjectVM.SetProjManager_Visibility(True)
|
|
Map.refProjectVM.SetProdManager_Visibility(False)
|
|
Map.refProjectVM.SetOnlyProdManager_Visibility(False)
|
|
Map.refProjectVM.SetOnlyProdLeftPanel_Visibility(False)
|
|
Map.refProjectVM.SetOnlyProdOptimizePanel_Visibility(False)
|
|
Map.refProjectVM.SetOptimizePanel_Visibility(Not IsNothing(Map.refProjectVM.BTLStructureVM) AndAlso Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.WALL AndAlso Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NESTING_AUTO))
|
|
Map.refCALCPanelVM.SetChooseMachine_Visibility(False)
|
|
EgtResetCurrMachGroup()
|
|
Return True
|
|
End Function
|
|
|
|
Private Function InitCONFIG() As Boolean
|
|
Map.refMainWindowVM.NotifyPropertyChanged(NameOf(Map.refMainWindowVM.nSelTabPage))
|
|
Map.refMainMenuVM.NotifyPropertyChanged(NameOf(Map.refMainMenuVM.SendFeedbackIsEnabled))
|
|
Return True
|
|
End Function
|
|
|
|
Private Function ExitCONFIG() As Boolean
|
|
Map.refConfigurationPageVM.VerifyConfigPageModification()
|
|
' resetto flag inserimento password
|
|
Map.refConfigurationPageVM.bModifyMachParam = False
|
|
If Not IsNothing(Map.refProjectVM.BTLStructureVM) Then
|
|
Map.refRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
|
|
Map.refFeatureInPartInRawPartListVM.UpdateColumns(CurrentMachine.nType)
|
|
If Not IsNothing(Map.refTopPanelVM) Then Map.refTopPanelVM.ManageQParamsRowVisibility(Map.refProjectVM.BTLStructureVM.nPROJTYPE <> BWType.BEAM)
|
|
Map.refPartInRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
|
|
Else
|
|
Map.refRawPartListVM.UpdateColumns(BWType.BEAM)
|
|
Map.refFeatureInPartInRawPartListVM.UpdateColumns(CurrentMachine.nType)
|
|
Map.refTopPanelVM.ManageQParamsRowVisibility(BWType.BEAM)
|
|
Map.refPartInRawPartListVM.UpdateColumns(BWType.BEAM)
|
|
End If
|
|
Return True
|
|
End Function
|
|
|
|
Private Function InitONLYPRODPAGE() As Boolean
|
|
' aggiorno lista possibili nesting
|
|
Map.refOptimizePanelVM.UpdateOriginTypeList(EgtGetFirstNameInGroup(GDB_ID.ROOT, "RawParts") <> GDB_ID.NULL)
|
|
' aggiorno visibilita' degli elementi grafici
|
|
Map.refProjectVM.SetBottomPanel_Visibility(True)
|
|
Map.refProjectVM.SetLeftPanel_Visibility(False)
|
|
Map.refFeatureListManagerVM.UpdateView()
|
|
Map.refBTLPartManagerVM.UpdateView()
|
|
Map.refProjectVM.SetFeatureManager_Visibility(True)
|
|
Map.refProjectVM.SetTopPanel_Visibility(True)
|
|
Map.refProjectVM.SetShowBeamPanel_Visibility(True)
|
|
Map.refProjectVM.SetOnlyProdManager_Visibility(True)
|
|
Map.refProjectVM.SetOnlyProdLeftPanel_Visibility(True)
|
|
Map.refProjectVM.SetOnlyProdOptimizePanel_Visibility(True)
|
|
Map.refProjectVM.SetOptimizePanel_Visibility(True)
|
|
Map.refProjectVM.NotifyAllPanelVisibility()
|
|
Map.refCALCPanelVM.SetChooseMachineBtn_Visibility(Map.refMainMenuVM.SelPage = Pages.ONLYPRODPAGE AndAlso Map.refMachinePanelVM.MachineList.Count > 1 AndAlso GetMainPrivateProfileInt(S_MACH, K_CHANGEMACH, 0) = 1)
|
|
'Map.refCALCPanelVM.SetChooseMachineBtn_Visibility(True)
|
|
Map.refStatisticsTimePanelVM.SetStatisticsTimePanel_Visibility()
|
|
|
|
If Not IsNothing(Map.refFeatureListVM.colFeature_Do) Then
|
|
Map.refFeatureListVM.colFeature_Do.ColumnVisibility = Visibility.Visible
|
|
End If
|
|
' aggiorno la visibilità delle colonne
|
|
For Each col In Map.refFeatureListVM.FeatureColumns
|
|
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
|
|
Next
|
|
For Each col In Map.refPartListVM.PartColumns
|
|
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
|
|
Next
|
|
If Not IsNothing(Map.refStatisticsVM) Then
|
|
For Each col In Map.refStatisticsVM.StatisticsColumns
|
|
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
|
|
Next
|
|
End If
|
|
For Each col In Map.refPParameterListVM.PParameterListColumns
|
|
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
|
|
Next
|
|
For Each col In Map.refQParameterListVM.QParameterListColumns
|
|
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
|
|
Next
|
|
|
|
DimensionsIniFile.ReadGridDimensions(ConstDims.PROJECT_ONLYPROD, Map.refProjectVM.GridDims)
|
|
|
|
' inizializzo gruppi di lavorazione
|
|
If Not IsNothing(Map.refOnlyProdManagerVM.CurrProd) AndAlso Not IsNothing(Map.refOnlyProdManagerVM.CurrProd.nProdId) AndAlso Map.refOnlyProdManagerVM.CurrProd.nProdId > 0 Then
|
|
If File.Exists(Map.refOnlyProdManagerVM.CurrProd.sProdPath) Then
|
|
' apro progetto
|
|
If Map.refOnlyProdManagerVM.CurrProd.bReloadProject OrElse Map.refConfigurationPageVM.QParametersModified Then
|
|
LoadingWndHelper.UpdateLoadingWnd(ActiveIds.GOTOPROD, 2, EgtMsg(63005), 10, 50) ' Loading parts
|
|
Map.refOnlyProdManagerVM.TempCurrProd = Map.refOnlyProdManagerVM.CurrProd
|
|
If Map.refSceneHostVM.MainController.OpenProject(Map.refOnlyProdManagerVM.CurrProd.sProdPath, False) Then
|
|
' aggiorno le colonne in base al tipo progetto
|
|
Map.refRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
|
|
Map.refFeatureInPartInRawPartListVM.UpdateColumns(CurrentMachine.nType)
|
|
If Not IsNothing(Map.refTopPanelVM) Then
|
|
Map.refTopPanelVM.ManageQParamsRowVisibility(Map.refProjectVM.BTLStructureVM.BTLStructureM.nPROJTYPE <> BWType.BEAM)
|
|
'Else
|
|
' Map.refProjectVM.ManageQParamsRowVisibility(Map.refProjectVM.BTLStructureVM.BTLStructureM.nPROJTYPE <> BWType.BEAM)
|
|
End If
|
|
Map.refPartInRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE)
|
|
' resetto modifica parametri Q default
|
|
Map.refConfigurationPageVM.ResetQParametersModified()
|
|
DbControllers.m_ProdController.LockByProdId(Map.refOnlyProdManagerVM.CurrProd.nProdId, True, Map.refMainWindowVM.MainWindowM.GetKeyNumber())
|
|
Map.refOnlyProdManagerVM.NotifyPropertyChanged(NameOf(Map.refOnlyProdManagerVM.MruFileNames))
|
|
End If
|
|
Else
|
|
LoadingWndHelper.UpdateLoadingWnd(ActiveIds.GOTOPROD, 2, EgtMsg(63005), 10, 30) ' Loading parts
|
|
' mostro tutti i pezzi
|
|
Map.refShowBeamPanelVM.ShowAll(False)
|
|
' verifico se il prod ha piu' proj
|
|
If Map.refOnlyProdManagerVM.CurrProd.nProjIdList.Count > 1 Then
|
|
' se si rigenero BTLStructure
|
|
Map.refProjectVM.BTLStructureVM = New BTLStructureVM(BTLStructureM.CreateBTLStructure(0))
|
|
' carico filtri di ricerca
|
|
Map.refProjectVM.BTLStructureVM.LoadFilters()
|
|
End If
|
|
' recupero indice di modifica progetto
|
|
Dim CommIndex As Integer = -1
|
|
Dim ActiveSessionList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetProd(m_SupervisorId)
|
|
For Each ActiveSession In ActiveSessionList
|
|
If ActiveSession.ItemId = Map.refOnlyProdManagerVM.CurrProd.nProdId Then
|
|
CommIndex = ActiveSession.Index
|
|
End If
|
|
Next
|
|
LoadingWndHelper.UpdateLoadingWnd(ActiveIds.GOTOPROD, 3, EgtMsg(63002), 30, 100) ' Loading machining groups
|
|
' carico lista dei MachGroup
|
|
Map.refProjectVM.MachGroupPanelVM = New MyMachGroupPanelVM(MyMachGroupPanelM.CreateMyMachGroupPanel(Map.refMachinePanelVM.MachineList.ToList()))
|
|
' fisso indice sessione di comunicazione
|
|
If CommIndex > -1 Then
|
|
Map.refOnlyProdManagerVM.CurrProd.SetModificationIndex(CommIndex)
|
|
End If
|
|
Map.refOnlyProdManagerVM.CurrProd.SetReloadProject(True)
|
|
End If
|
|
'DbControllers.m_ProdController.ResetController()
|
|
' se Warehouse di tipo Medium e piu' di un progetto collegato
|
|
Dim nDefault As Integer = 2
|
|
If GetMainPrivateProfileInt(S_WAREHOUSE, EgtBEAMWALL.Core.ConstIni.K_TYPE, nDefault) = WarehouseType.MEDIUM AndAlso Map.refOnlyProdManagerVM.CurrProd.nProjIdList.Count > 1 Then
|
|
' confronto le Sezioni del BTL importato con quelle in Warehouse
|
|
WarehouseWndVM.UpdateSectionXMaterial()
|
|
End If
|
|
' aggiorno titolo
|
|
Map.refMainWindowVM.UpdateTitle()
|
|
DbControllers.m_ProdController.LockByProdId(Map.refOnlyProdManagerVM.CurrProd.nProdId, True, Map.refMainWindowVM.MainWindowM.GetKeyNumber())
|
|
' controllo se devo lanciare verifica perche' importato
|
|
Dim bGetVerifyResult As Boolean = False
|
|
Dim bVerifyMach As Boolean = False
|
|
Dim nBTLInfoLayerId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, BTLINFO)
|
|
While nBTLInfoLayerId <> GDB_ID.NULL
|
|
If EgtGetInfo(nBTLInfoLayerId, IMP_VERIFYMACHGROUP, bGetVerifyResult) AndAlso bGetVerifyResult Then
|
|
If Not bVerifyMach Then bVerifyMach = True
|
|
EgtSetInfo(nBTLInfoLayerId, IMP_VERIFYMACHGROUP, False)
|
|
End If
|
|
nBTLInfoLayerId = EgtGetNextName(nBTLInfoLayerId, BTLINFO)
|
|
End While
|
|
If bVerifyMach Then
|
|
Map.refCALCPanelVM.VerifyAll()
|
|
End If
|
|
' seleziono prima barra
|
|
Map.refProjectVM.MachGroupPanelVM.SelFirstMachGroup()
|
|
Else
|
|
MessageBox.Show(EgtMsg(61871))
|
|
End If
|
|
Else
|
|
Map.refSceneHostVM.MainController.NewProject()
|
|
Map.refProjectVM.BTLStructureVM = Nothing
|
|
Map.refProjectVM.MachGroupPanelVM = Nothing
|
|
End If
|
|
|
|
Map.refMainWindowVM.NotifyPropertyChanged(NameOf(Map.refMainWindowVM.nSelTabPage))
|
|
Map.refMainMenuVM.NotifyPropertyChanged(NameOf(Map.refMainMenuVM.SendFeedbackIsEnabled))
|
|
Map.refInstrumentPanelVM.NotifyPropertyChanged(NameOf(Map.refInstrumentPanelVM.Statistic_Visibility))
|
|
Map.refInstrumentPanelVM.NotifyPropertyChanged(NameOf(Map.refInstrumentPanelVM.VisStatistic_Visibility))
|
|
Map.refInstrumentPanelVM.NotifyPropertyChanged(NameOf(Map.refInstrumentPanelVM.OtStatistic_Visibility))
|
|
Return True
|
|
End Function
|
|
|
|
Private Function ExitONLYPRODPAGE(bVerifyModification As Boolean) As Boolean
|
|
' verifico se progetto modificato, e chiedo se salvare
|
|
If bVerifyModification Then
|
|
If ProdFileVM.VerifyProjectModification(Map.refOnlyProdManagerVM.CurrProd) = MessageBoxResult.Cancel Then
|
|
Return False
|
|
End If
|
|
End If
|
|
' resetto eventuale visualizzazione statistiche
|
|
Map.refInstrumentPanelVM.ResetStatisticsIsChecked()
|
|
Map.refProjectVM.SetBottomPanel_Visibility(False)
|
|
Map.refProjectVM.SetLeftPanel_Visibility(True)
|
|
Map.refProjectVM.SetFeatureManager_Visibility(False)
|
|
Map.refProjectVM.SetTopPanel_Visibility(False)
|
|
Map.refProjectVM.SetShowBeamPanel_Visibility(False)
|
|
Map.refProjectVM.SetProjManager_Visibility(False)
|
|
Map.refProjectVM.SetProdManager_Visibility(False)
|
|
Map.refProjectVM.SetOnlyProdManager_Visibility(False)
|
|
Map.refProjectVM.SetOnlyProdLeftPanel_Visibility(False)
|
|
Map.refProjectVM.SetOnlyProdOptimizePanel_Visibility(False)
|
|
Map.refProjectVM.SetOptimizePanel_Visibility(True)
|
|
Map.refCALCPanelVM.SetChooseMachine_Visibility(False)
|
|
EgtResetCurrMachGroup()
|
|
Return True
|
|
End Function
|
|
|
|
Public Sub OpenPageFromSupervisor(Page As Pages)
|
|
If m_SelPage <> Page Then
|
|
m_nPageToOpen = Page
|
|
m_bOpenPage = True
|
|
End If
|
|
End Sub
|
|
|
|
Public Sub OpenPage_Tick()
|
|
If Not m_bOpenPage Then Return
|
|
m_bOpenPage = False
|
|
' apro la pagina
|
|
SelPage = m_nPageToOpen
|
|
m_nPageToOpen = Pages.MACHINING
|
|
End Sub
|
|
|
|
#End Region ' METHODS
|
|
|
|
#Region "COMMANDS"
|
|
|
|
#Region "Supervisor"
|
|
|
|
Public ReadOnly Property Supervisor_Command As ICommand
|
|
Get
|
|
If m_cmdSupervisor Is Nothing Then
|
|
m_cmdSupervisor = New Command(AddressOf Supervisor)
|
|
End If
|
|
Return m_cmdSupervisor
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub Supervisor()
|
|
Dim sSupervisorName As String = "EgtBEAMWALL.SupervisorR32"
|
|
' recupero processo del supervisore
|
|
Dim localProc As Process() = Process.GetProcessesByName(sSupervisorName)
|
|
If localProc.Length > 0 Then
|
|
For Each p As Process In localProc
|
|
' porto in primo piano il Supervisor
|
|
BringWindowToFront(p.MainWindowHandle)
|
|
Exit For
|
|
Next
|
|
Else
|
|
Dim sSupervisorPath As String = Path.GetDirectoryName(System.AppDomain.CurrentDomain.BaseDirectory) & "\" & sSupervisorName & ".exe"
|
|
Try
|
|
Process.Start(sSupervisorPath)
|
|
Catch ex As Exception
|
|
EgtOutLog("Error: impossible starting supervisor from path " & sSupervisorPath)
|
|
End Try
|
|
End If
|
|
End Sub
|
|
|
|
#End Region ' Supervisor
|
|
|
|
#Region "SendFeedbackCommand"
|
|
|
|
''' <summary>
|
|
''' Returns a command that do SendFeedback.
|
|
''' </summary>
|
|
Public ReadOnly Property SendFeedbackCommand As ICommand
|
|
Get
|
|
If m_cmdSendFeedback Is Nothing Then
|
|
m_cmdSendFeedback = New Command(AddressOf SendFeedback)
|
|
End If
|
|
Return m_cmdSendFeedback
|
|
End Get
|
|
End Property
|
|
|
|
''' <summary>
|
|
''' Execute the SendFeedback. This method is invoked by the SendFeedbackCommand.
|
|
''' </summary>
|
|
Public Sub SendFeedback(ByVal param As Object)
|
|
If SelPage = Pages.MACHINING AndAlso IsNothing(ProjectManagerVM.CurrProd) Then
|
|
MessageBox.Show(EgtMsg(61891), EgtMsg(MSG_MESSAGEBOX + 1), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Return
|
|
End If
|
|
' Recupero indirizzo a cui spedire la mail
|
|
Dim sSupportAddress As String = String.Empty
|
|
GetMainPrivateProfileString(S_GENERAL, K_SUPPORT, "support@egaltech.com", sSupportAddress)
|
|
' se vuoto do messaggio di errore ed esco
|
|
If String.IsNullOrWhiteSpace(sSupportAddress) Then
|
|
MessageBox.Show(EgtMsg(MSG_TOPCOMMANDBAR + 10), EgtMsg(MSG_MESSAGEBOX + 1), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Return
|
|
End If
|
|
' Recupero numero chiave
|
|
Dim sKey As String = String.Empty
|
|
EgtGetKeyInfo(sKey)
|
|
'' Recupero file del progetto corrente
|
|
'Dim sCurrProject As String = String.Empty
|
|
'EgtGetCurrFilePath(sCurrProject)
|
|
'' se nome file vuoto, chiedo se si vuole salvare
|
|
'If String.IsNullOrWhiteSpace(sCurrProject) Then
|
|
' If MessageBox.Show(EgtMsg(MSG_TOPCOMMANDBAR + 11), "", MessageBoxButton.YesNo, MessageBoxImage.Question) = MessageBoxResult.Yes Then
|
|
' Map.refSceneHostVM.SaveProject()
|
|
' End If
|
|
' EgtGetCurrFilePath(sCurrProject)
|
|
' ' se modificato, chiedo se si vuole salvare
|
|
'Else
|
|
' If EgtGetModified() Then
|
|
' If MessageBox.Show(EgtMsg(MSG_TOPCOMMANDBAR + 11), "", MessageBoxButton.YesNo, MessageBoxImage.Question) = MessageBoxResult.Yes Then
|
|
' Map.refSceneHostVM.SaveProject()
|
|
' End If
|
|
' End If
|
|
'End If
|
|
' Esporto il progetto
|
|
Dim ProjFileMList As List(Of ProjFileM)
|
|
If SelPage = Pages.MACHINING And Not IsNothing(ProjectManagerVM.CurrProd) Then
|
|
ProjFileMList = DbControllers.m_ProjController.GetByProdAsc(ProjectManagerVM.CurrProd.nProdId)
|
|
Map.refProjManagerVM.SetCurrProj(ProjFileMList(0).nProjId)
|
|
End If
|
|
Dim sExportFileName = ProjectManagerVM.CurrProj.nProjId.ToString("0000") & " - " & ProjectManagerVM.CurrProj.sBTLFileName & " - ProjectExport"
|
|
Dim sExpZipToCreate = Map.refProjManagerVM.ExportProject(sExportFileName)
|
|
' Creo zip file da allegare
|
|
Dim sZipToCreate As String = Map.refMainWindowVM.MainWindowM.sTempDir & "\Feedback.zip"
|
|
If File.Exists(sZipToCreate) Then
|
|
File.Delete(sZipToCreate)
|
|
End If
|
|
Try
|
|
Using zip As New Ionic.Zip.ZipFile(sZipToCreate, Console.Out)
|
|
' aggiungo progetto esportato
|
|
If File.Exists(sExpZipToCreate) Then
|
|
zip.AddItem(sExpZipToCreate, "")
|
|
End If
|
|
' aggiungo Prod e Proj associati
|
|
Dim ProdId As Integer
|
|
Select Case Map.refMainMenuVM.SelPage
|
|
Case Pages.VIEW
|
|
ProdId = ProjectManagerVM.CurrProj.nProdId
|
|
Case Pages.MACHINING
|
|
ProdId = ProjectManagerVM.CurrProd.nProdId
|
|
End Select
|
|
If ProdId = 0 Then
|
|
zip.AddItem(ProjectManagerVM.CurrProj.sProjDirPath, "Projs\" & ProjectManagerVM.CurrProj.nProjId.ToString("0000"))
|
|
Else
|
|
ProjFileMList = DbControllers.m_ProjController.GetByProdAsc(ProdId)
|
|
' se piu' di uno
|
|
If IsNothing(ProjFileMList) Then
|
|
Return
|
|
ElseIf ProjFileMList.Count > 0 Then
|
|
Dim ProjFileVMList As New List(Of ProjectFileVM)
|
|
For Each Project In ProjFileMList
|
|
ProjFileVMList.Add(New ProjFileVM(Project))
|
|
Next
|
|
For Each ProjFileVMItem In ProjFileVMList
|
|
zip.AddItem(ProjFileVMItem.sProjDirPath, "Projs\" & ProjFileVMItem.nProjId.ToString("0000"))
|
|
Next
|
|
zip.AddItem(ProjFileVMList(0).sProdDirPath, "Prods\" & ProjFileVMList(0).nProdId.ToString("0000"))
|
|
End If
|
|
End If
|
|
' aggiungo cartella macchina del progetto
|
|
Dim sMachineDir As String = Map.refMainWindowVM.MainWindowM.sMachinesRoot & "\" & sMachineName
|
|
If Directory.Exists(sMachineDir) Then
|
|
zip.AddItem(sMachineDir, sMachineName)
|
|
End If
|
|
' aggiungo file log
|
|
If File.Exists(Map.refMainWindowVM.MainWindowM.sLogFile) Then
|
|
zip.AddItem(Map.refMainWindowVM.MainWindowM.sLogFile, "")
|
|
End If
|
|
' aggiungo file parametri P e Q
|
|
If File.Exists(BTLIniFile.m_sBTLIniFile) Then
|
|
zip.AddItem(BTLIniFile.m_sBTLIniFile, "")
|
|
End If
|
|
' salvo lo zip
|
|
zip.Save()
|
|
End Using
|
|
Catch ex1 As Exception
|
|
EgtOutLog("Exception in zip: " & ex1.ToString())
|
|
End Try
|
|
' preparo la mail per il supporto
|
|
Dim bEx As Boolean = False
|
|
Try
|
|
Dim sAddressArray As String() = sSupportAddress.Split(CType(",", Char()))
|
|
Dim SendFeedbackWindow As New EgtWPFLib5.MapiMailMessage("EgtBEAMWALL Feedback - " & sKey)
|
|
SendFeedbackWindow.Recipients.Add(sAddressArray(0))
|
|
For index As Integer = 1 To sAddressArray.Length() - 1
|
|
SendFeedbackWindow.Recipients.Add(sAddressArray(index), EgtWPFLib5.MapiMailMessage.RecipientType.CC)
|
|
Next
|
|
If Not String.IsNullOrWhiteSpace(sZipToCreate) AndAlso File.Exists(sZipToCreate) Then
|
|
SendFeedbackWindow.Files.Add(Map.refMainWindowVM.MainWindowM.sTempDir & "\Feedback.zip")
|
|
End If
|
|
SendFeedbackWindow.ShowDialog()
|
|
Catch ex As Exception
|
|
EgtOutLog("Feedback exception: " & ex.ToString)
|
|
bEx = True
|
|
End Try
|
|
If bEx OrElse EgtWPFLib5.MapiMailMessage.m_ErrorCode <> 0 Then
|
|
MessageBox.Show(String.Format(EgtMsg(MSG_TOPCOMMANDBAR + 12), sSupportAddress, sZipToCreate), EgtMsg(MSG_MESSAGEBOX + 3), MessageBoxButton.OK, MessageBoxImage.Information)
|
|
Else
|
|
Map.refMyStatusBarVM.SetOutputMessage(EgtMsg(MSG_TOPCOMMANDBAR + 14))
|
|
End If
|
|
End Sub
|
|
|
|
#End Region ' SendFeedbackCommand
|
|
|
|
#Region "TEST"
|
|
|
|
#End Region ' TEST
|
|
|
|
#End Region ' COMMANDS
|
|
|
|
End Class |