Compare commits

...

1 Commits

Author SHA1 Message Date
Demetrio Cassarino 625f12a1e8 - creato nuovo pulsante dump per la visualizzazione file lua 2023-12-14 11:11:50 +01:00
13 changed files with 311 additions and 1 deletions
+5
View File
@@ -168,4 +168,9 @@ Public Module ConstIni
Public Const K_EXTERNALFILEPATH As String = "ExternalFilePath"
Public Const K_REMINDERFREQUENCY As String = "ReminderFrequency"
Public Const K_SPECIALPANEL As String = "SpecialPanel"
Public Const S_SPECIAL As String = "Special"
Public Const K_SPECIALENABLE As String = "SpecialEnable"
End Module
@@ -47,6 +47,7 @@
Visibility="{Binding ChooseMachineBtn_Visibility}">
<Image Source="/Resources/CALCPanel/ChooseMachine.png" Stretch="Uniform"/>
</Button>
<Grid Margin="0,0,5,0" Visibility="{Binding ChooseMachine_Visibility}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
@@ -338,6 +338,10 @@
<DependentUpon>SetUpV.xaml</DependentUpon>
</Compile>
<Compile Include="SetUp\SetUpVM.vb" />
<Compile Include="SpecialPanel\SpecialPanelV.xaml.vb">
<DependentUpon>SpecialPanelV.xaml</DependentUpon>
</Compile>
<Compile Include="SpecialPanel\SpecialPanelVM.vb" />
<Compile Include="StatisticsTimePanel\StatisticsTimePanelV.xaml.vb">
<DependentUpon>StatisticsTimePanelV.xaml</DependentUpon>
</Compile>
@@ -544,6 +548,10 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="SpecialPanel\SpecialPanelV.xaml">
<SubType>Designer</SubType>
<Generator>XamlIntelliSenseFileGenerator</Generator>
</Page>
<Page Include="StatisticsTimePanel\StatisticsTimePanelV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -157,6 +157,13 @@ Public Class MainWindowM
End Get
End Property
Private m_bSpecialPanel As Boolean = False
Friend ReadOnly Property bSpecialPanel As Boolean
Get
Return m_bSpecialPanel
End Get
End Property
#End Region ' FIELDS
#Region "CONSTRUCTOR"
@@ -278,6 +285,8 @@ Public Class MainWindowM
EgtSetUiUnits(GetMainPrivateProfileInt(S_SCENE, K_MMUNITS, 1) <> 0)
' Leggo e imposto livello utilizzatore
m_nUserLevel = Math.Min(m_nKeyLevel, GetMainPrivateProfileInt(S_GENERAL, K_USERLEVEL, 1))
' Recupero flag SpecialPanel
m_bSpecialPanel = GetMainPrivateProfileInt(S_GENERAL, K_SPECIALPANEL, 0) = 1
' Imposto dir font Nfe e font default
Dim sNfeDir As String = String.Empty
GetMainPrivateProfileString(S_GEOMDB, K_NFEFONTDIR, "", sNfeDir)
@@ -52,6 +52,8 @@
<EgtBEAMWALL:ViewPanelV DataContext="{StaticResource ViewPanelVM}"/>
<EgtBEAMWALL:InstrumentPanelV DataContext="{StaticResource InstrumentPanelVM}"/>
<EgtBEAMWALL:CalcPanelV DataContext="{StaticResource CALCPanelVM}"/>
<EgtBEAMWALL:SpecialPanelV DataContext="{StaticResource SpecialPanelVM}"
Visibility="{Binding DataContext.SpecialPanel_Visibility, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:ProjectV}}}"/>
<EgtBEAMWALL:FreeContourManagerV DataContext="{StaticResource FreeContourManagerVM}"
Visibility="{Binding DataContext.FreeContourManager_Visibility, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:ProjectV}}}"/>
</WrapPanel>
@@ -3,6 +3,7 @@ Imports EgtBEAMWALL.Core
Imports EgtWPFLib5
Imports EgtUILib
Imports System.Collections.ObjectModel
Imports EgtBEAMWALL.DataLayer.Controllers
Public Class ProjectVM
Inherits VMBase
@@ -11,6 +12,12 @@ Public Class ProjectVM
Private m_Calc_Timer As New DispatcherTimer
Friend Event OnPreControllerExec(sFilePath As String)
Friend Event OnPostControllerExec()
' Flag per non salvare Script appena eseguito in elenco MruScript
Private m_bScriptInMru As Boolean = True
Private Property m_GridDims As New ObservableCollection(Of GridDimension)
Public Property GridDims As ObservableCollection(Of GridDimension)
Get
@@ -189,6 +196,13 @@ Public Class ProjectVM
NotifyPropertyChanged("FreeContourManager_Visibility")
End Sub
Public ReadOnly Property SpecialPanel_Visibility As Visibility
Get
Return If(Map.refMainWindowVM.MainWindowM.bSpecialPanel AndAlso Map.refMainWindowVM.MainWindowM.nUserLevel = 5, Visibility.Visible, Visibility.Collapsed)
End Get
End Property
Friend Sub NotifyAllPanelVisibility()
NotifyPropertyChanged("LeftPanel_Visibility")
NotifyPropertyChanged("TopPanel_Visibility")
@@ -59,6 +59,8 @@ Public Class MySceneHostVM
PostInitializeScene()
' Imposto stato gestione mouse diretto della scena a nessuno
MainScene.SetStatusNull()
' Imposto focus pulsante su false
MainScene.SetFocusOnMove(False)
' Recupero e imposto handle finestra principale
Dim hMainWnd As IntPtr = New WindowInteropHelper(Application.Current.MainWindow).Handle
EgtSetMainWindowHandle(hMainWnd)
@@ -0,0 +1,24 @@
<EgtFloating:EgtFloatingPanel x:Class="SpecialPanelV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtFloating="clr-namespace:EgtWPFLib5.EgtFloating;assembly=EgtWPFLib5"
IsTopDockable="True" IsBottomDockable="False" IsLeftDockable="False"
IsRightDockable="False" Style="{StaticResource ToolBar_EgtFloatingPanel}">
<ItemsControl ItemsSource="{Binding ButtonList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button ToolTip="{Binding ToolTip}" Command="{Binding LuaExecCommand}" Style="{StaticResource DrawPanelButton}"
Visibility="{Binding Btn_Visibility}" IsEnabled="{Binding Btn_IsEnabled}">
<Image Source="{Binding ImagePath}"/>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</EgtFloating:EgtFloatingPanel>
@@ -0,0 +1,3 @@
Public Class SpecialPanelV
End Class
@@ -0,0 +1,207 @@
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib5
Imports EgtBEAMWALL.Core
Public Class SpecialPanelVM
Private m_ButtonList As New List(Of ButtonItem)
Public ReadOnly Property ButtonList As List(Of ButtonItem)
Get
Return m_ButtonList
End Get
End Property
Sub New()
' Creo riferimento a questa classe in Map
Map.SetRefSpecialPanelVM(Me)
' se attivo, inizializzo i bottoni leggendoli da file ini
If IsActiveSpecialPanel() Then
Dim BtnIndex As Integer = 1
Dim CurrBtn As ButtonItem = Nothing
While GetPrivateProfileButton(S_SPECIAL, K_BUTTON & BtnIndex, "", CurrBtn)
m_ButtonList.Add(CurrBtn)
BtnIndex += 1
End While
End If
End Sub
#Region "METHODS"
Public Function SetSpecialPanelButtonsVisibility(IsMachMode As Boolean) As Boolean
Dim bSpecialPanel_Visible As Boolean = False
For Each BtnItem In m_ButtonList
' verifico il valore di nDrawMachOrBoth del bottone e IsMachMode per rendere visibile o meno il bottone in ButtonList
Select Case BtnItem.nDrawMachOrBoth
Case 0 ' bottone nascosto
BtnItem.m_Btn_Visibility = Visibility.Collapsed
Case 1 ' bottone visibile solo in Draw
BtnItem.m_Btn_Visibility = If(Not IsMachMode, Visibility.Visible, Visibility.Collapsed)
Case 2 ' bottone visibile solo in Machining
BtnItem.m_Btn_Visibility = If(IsMachMode, Visibility.Visible, Visibility.Collapsed)
Case 3 ' bottone visibile sia in Draw che in Machining
BtnItem.m_Btn_Visibility = Visibility.Visible
End Select
' se anche uno solo è visibile anche lo SpecialPanel dovrà esserlo
If BtnItem.Btn_Visibility = Visibility.Visible Then bSpecialPanel_Visible = True
'BtnItem.OnPropertyChanged(NameOf(BtnItem.Btn_Visibility))
BtnItem.NotifyPropertyChanged(NameOf(BtnItem.Btn_Visibility))
Next
Return bSpecialPanel_Visible
End Function
Friend Sub SpecialPanelIsEnabled(SpecialPanelBtn_IsEnabled As Boolean)
For Each BtnItem In m_ButtonList
BtnItem.m_Btn_IsEnabled = SpecialPanelBtn_IsEnabled
'BtnItem.OnPropertyChanged(NameOf(BtnItem.Btn_IsEnabled))
BtnItem.NotifyPropertyChanged(NameOf(BtnItem.Btn_IsEnabled))
Next
End Sub
Friend Function IsActiveSpecialPanel() As Boolean
Dim btDummy As ButtonItem = Nothing
Return GetMainPrivateProfileInt(S_SPECIAL, K_SPECIALENABLE, 0) <> 0 AndAlso GetPrivateProfileButton(S_SPECIAL, K_BUTTON & "1", "", btDummy)
End Function
Public Function GetPrivateProfileButton(sSection As String, sKey As String, sBaseDir As String, ByRef ReadButtonItem As ButtonItem) As Boolean
ReadButtonItem = Nothing
Dim sVal As String = String.Empty
GetMainPrivateProfileString(sSection, sKey, "", sVal)
If String.IsNullOrWhiteSpace(sVal) Then Return False
Dim sItems() As String = sVal.Split(","c)
If sItems.Count() >= 1 Then
Dim sLuaPath As String = sItems(0)
Dim sImagePath As String = If(sItems.Count() >= 2, sItems(1), "")
Dim sToolTip As String = If(sItems.Count() >= 3, sItems(2), "")
Dim sDrawMachOrBoth As String = If(sItems.Count() >= 4 AndAlso Not String.IsNullOrWhiteSpace(sItems(3)), sItems(3), "1")
If Not String.IsNullOrWhiteSpace(sBaseDir) And Not String.IsNullOrWhiteSpace(sLuaPath) Then
If sLuaPath.Contains(".lua") Then sLuaPath = sBaseDir & "\" & sLuaPath
If Not String.IsNullOrWhiteSpace(sImagePath) Then sImagePath = sBaseDir & "\" & sImagePath
End If
ReadButtonItem = New ButtonItem(sSection, sLuaPath, sImagePath, sToolTip, sDrawMachOrBoth)
Return True
End If
Return False
End Function
#End Region ' Methods
End Class
Public Class ButtonItem
Inherits VMBase
Friend Shared WithEvents m_ProjectVM As ProjectVM
Private Shared m_sCurrBarName As String
Private m_sBarName As String
Private m_sImagePath As String
Public ReadOnly Property ImagePath As String
Get
Return m_sImagePath
End Get
End Property
Private m_sLuaCmdPath As String
Private m_sToolTip As String
Public ReadOnly Property ToolTip As String
Get
Return m_sToolTip
End Get
End Property
Private m_nDrawMachOrBoth As Integer
Public ReadOnly Property nDrawMachOrBoth As Integer
Get
Return m_nDrawMachOrBoth
End Get
End Property
Friend m_Btn_Visibility As Visibility
Public ReadOnly Property Btn_Visibility As Visibility
Get
Return m_Btn_Visibility
End Get
End Property
Friend m_Btn_IsEnabled As Boolean = True
Public ReadOnly Property Btn_IsEnabled As Boolean
Get
Return m_Btn_IsEnabled
End Get
End Property
' Definizione comandi
Private m_cmdLuaExec As ICommand
Sub New( sBarName As String, sLuaCmdPath As String, sImagePath As String, sToolTip As String, sDrawMachOrBoth As String)
m_sBarName = sBarName
If File.Exists(sImagePath) Then
' per lasciare libere le immagini le copio (potrebbe fallire perchè bloccate da altro eseguibile)
Dim sNewPath As String = Path.Combine(Map.refMainWindowVM.MainWindowM.sResourcesRoot, sBarName & "_" & Path.GetFileName(sImagePath))
Try
File.Copy( sImagePath, sNewPath, True)
Catch ex As Exception
End Try
m_sImagePath = sNewPath
Else
m_sImagePath = Map.refMainWindowVM.MainWindowM.sResourcesRoot & "\" & sImagePath
End If
m_sLuaCmdPath = sLuaCmdPath
m_sToolTip = sToolTip
If Not Integer.TryParse(sDrawMachOrBoth, m_nDrawMachOrBoth) Then m_nDrawMachOrBoth = 0
End Sub
#Region "COMMANDS"
#Region "LuaExecCommand"
''' <summary>
''' Returns a command that do New.
''' </summary>
Public ReadOnly Property LuaExecCommand As ICommand
Get
If m_cmdLuaExec Is Nothing Then
m_cmdLuaExec = New Command(AddressOf LuaExec)
End If
Return m_cmdLuaExec
End Get
End Property
''' <summary>
''' Execute the New. This method is invoked by the NewCommand.
''' </summary>
Public Sub LuaExec(ByVal param As Object)
If String.IsNullOrWhiteSpace(m_sLuaCmdPath) Then Return
If Not File.Exists(m_sLuaCmdPath) Then Return
If Not Path.GetExtension(m_sLuaCmdPath).ToLower = ".lua" Then Return
' Abilito eventi se comando lua termina con Beam\Process.lua
m_sCurrBarName = m_sBarName
Dim bRaiseEvent As Boolean = ( m_sBarName = "Beam" OrElse m_sBarName = "Wall")
' eseguo file Lua
EgtBEAMWALL.ViewerOptimizer.LuaExec.ExecScript(m_sLuaCmdPath, bRaiseEvent)
m_sCurrBarName = Nothing
End Sub
'Private Shared Sub OnPreControllerExec(sFilePath As String) Handles m_ProjectVM.OnPreControllerExec
' If m_sCurrBarName = "Beam" Then
' EgtLuaCreateGlobTable("BEAM")
' EgtLuaSetGlobStringVar("BEAM.BASEDIR", IniFile.m_sBeamDirPath)
' If EgtGetUserLevel() >= 9 AndAlso GetPrivateProfileInt(S_LUA, K_BWSIM, 0) = 1 then EgtLuaSetGlobBoolVar("BEAM.BW", true)
' ElseIf m_sCurrBarName = "Wall" Then
' EgtLuaCreateGlobTable("WALL")
' EgtLuaSetGlobStringVar("WALL.BASEDIR", IniFile.m_sWallDirPath)
' If EgtGetUserLevel() >= 9 AndAlso GetPrivateProfileInt(S_LUA, K_BWSIM, 0) = 1 then EgtLuaSetGlobBoolVar("WALL.BW", true)
' End If
'End Sub
'Private Shared Sub OnPostControllerExec() Handles m_ProjectVM.OnPostControllerExec
' If m_sCurrBarName = "Beam" Then
' EgtLuaResetGlobVar("BEAM")
' ElseIf m_sCurrBarName = "Wall" Then
' EgtLuaResetGlobVar("WALL")
' End If
'End Sub
#End Region ' LuaExecCommand
#End Region ' Commands
End Class
@@ -51,6 +51,7 @@
<OmagOFFICE:MachiningTabVM x:Key="MachiningTabVM"/>
<OmagOFFICE:SimulTabVM x:Key="SimulTabVM"/>-->
<EgtBEAMWALL:MyMachGroupPanelVM x:Key="MachGroupPanelVM"/>
<EgtBEAMWALL:SpecialPanelVM x:Key="SpecialPanelVM"/>
<!--Colori predefiniti-->
<SolidColorBrush x:Key="Omag_Blue" Color="#FF095CA8" />
@@ -310,6 +311,13 @@
</Style.Triggers>
</Style>
<Style x:Key="DrawPanelButton" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="30"/>
<Setter Property="Width" Value="30"/>
</Style>
<!-- ______________________________________________________________________________________________________________________________________________ -->
<!-- TextBlock -->
@@ -1,4 +1,5 @@
Imports EgtBEAMWALL.Core
Imports EgtBEAMWALL.DataLayer.Controllers
Imports EgtUILib
Imports EgtWPFLib5
@@ -203,4 +204,17 @@ Module LuaExec
Return bOk
End Function
' Special Panel
Friend Sub ExecScript(sFilePath As String, Optional bRaiseEvent As Boolean = False)
EgtLuaExecFile(sFilePath)
'Dim bMachiningMode As Boolean = EgtGetCurrMachGroup() <> GDB_ID.NULL
'If Not bMachiningMode And EgtGetCurrLayer() = GDB_ID.NULL Then
' Dim nCurrPart As Integer = EgtGetCurrPart()
' If nCurrPart = GDB_ID.NULL Or Not EgtSetCurrPartLayer(nCurrPart, EgtGetFirstLayer(nCurrPart, True)) Then
' EgtResetCurrPartLayer()
' End If
'End If
End Sub
End Module
+14 -1
View File
@@ -34,6 +34,7 @@ Module Map
Private m_refFeatureManagerVM As FeatureManagerVM
Private m_refAddSectionXMaterialWndVM As AddSectionXMaterialWndVM
Private m_refStatisticsTimePanelVM As StatisticsTimePanelVM
Private m_refSpecialPanelVM As SpecialPanelVM
'Private m_refOpenProjectFileDialogVM As OpenProjectFileDialogVM
'Private m_refRawPartTabVM As RawPartTabVM
'Private m_refNestingTabVM As NestingTabVM
@@ -241,6 +242,12 @@ Module Map
End Get
End Property
Public ReadOnly Property refSpecialPanelVM As SpecialPanelVM
Get
Return m_refSpecialPanelVM
End Get
End Property
'Public ReadOnly Property refOpenProjectFileDialogVM As OpenProjectFileDialogVM
' Get
' Return m_refOpenProjectFileDialogVM
@@ -453,6 +460,12 @@ Module Map
Return Not IsNothing(m_refStatisticsTimePanelVM)
End Function
Friend Function SetRefSpecialPanelVM(SpecialPanelVM As SpecialPanelVM) As Boolean
m_refSpecialPanelVM = SpecialPanelVM
Return Not IsNothing(m_refSpecialPanelVM)
End Function
'Friend Function SetRefOpenProjectFileDialogVM(OpenProjectFileDialogVM As OpenProjectFileDialogVM) As Boolean
' m_refOpenProjectFileDialogVM = OpenProjectFileDialogVM
' Return Not IsNothing(m_refOpenProjectFileDialogVM)
@@ -526,7 +539,7 @@ Module Map
Not IsNothing(m_refStatisticsVM) AndAlso Not IsNothing(m_refPParameterListVM) AndAlso
Not IsNothing(m_refQParameterListVM) AndAlso Not IsNothing(m_refFeatureManagerVM) AndAlso
Not IsNothing(m_refAddSectionXMaterialWndVM) AndAlso Not IsNothing(m_refStatisticsTimePanelVM) AndAlso
LibMap.EndInit()
Not IsNothing(m_refSpecialPanelVM) AndAlso LibMap.EndInit()
End Function
#End Region ' Init