Effector.Plugin.StoneCut 3.1.5.7:

- primo rilascio dopo prove su macchina
This commit is contained in:
Emmanuele Sassi
2026-05-05 13:19:32 +02:00
parent 4ecfc1c6dc
commit 5ce2c38baa
78 changed files with 8394 additions and 0 deletions
+330
View File
@@ -0,0 +1,330 @@
# ---> VisualStudio
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
build/
bld/
[Bb]in/
[Oo]bj/
# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# DNX
project.lock.json
artifacts/
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# Windows Azure Build Output
csx/
*.build.csdef
# Windows Store app package directory
AppPackages/
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
orleans.codegen.cs
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# ---> C Sharp
# Build Folders (you can keep bin if you'd like, to store dlls and pdbs)
[Bb]in/
[Oo]bj/
# mstest test results
TestResults
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.sln.docstates
# Build results
[Dd]ebug/
[Rr]elease/
x64/
*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.log
*.vspscc
*.vssscc
.builds
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
# Visual Studio profiler
*.psess
*.vsp
*.vspx
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*
# NCrunch
*.ncrunch*
.*crunch*.local.xml
# Installshield output folder
[Ee]xpress
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish
# Publish Web Output
*.Publish.xml
# NuGet Packages Directory
packages
# Windows Azure Build Output
csx
*.build.csdef
# Windows Store app package directory
AppPackages/
# Others
[Bb]in
[Oo]bj
sql
TestResults
[Tt]est[Rr]esult*
*.Cache
ClientBin
[Ss]tyle[Cc]op.*
~$*
*.dbmdl
Generated_Code #added for RIA/Silverlight projects
# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
.ionide/symbolCache.db
+51
View File
@@ -0,0 +1,51 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.8.34309.116
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Effector.Plugin.Interface", "..\Effector\Effector.Plugin.Interface\Effector.Plugin.Interface.vbproj", "{7D14D864-2BDC-4785-80F4-320164C2D5E4}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Effector.Plugin.StoneCut", "Effector.Plugin.StoneCut\Effector.Plugin.StoneCut.vbproj", "{7C77F537-8235-40AB-B24A-4E71CFB96D2C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Debug|x64.ActiveCfg = Debug|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Debug|x64.Build.0 = Debug|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Debug|x86.ActiveCfg = Debug|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Debug|x86.Build.0 = Debug|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Release|Any CPU.Build.0 = Release|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Release|x64.ActiveCfg = Release|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Release|x64.Build.0 = Release|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Release|x86.ActiveCfg = Release|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Release|x86.Build.0 = Release|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Debug|x64.ActiveCfg = Debug|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Debug|x64.Build.0 = Debug|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Debug|x86.ActiveCfg = Debug|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Debug|x86.Build.0 = Debug|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Release|Any CPU.Build.0 = Release|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Release|x64.ActiveCfg = Release|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Release|x64.Build.0 = Release|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Release|x86.ActiveCfg = Release|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {F9D87F62-BDA1-4B0C-BE15-C43A682829E8}
EndGlobalSection
EndGlobal
+68
View File
@@ -0,0 +1,68 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.8.34309.116
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Effector.Main", "..\Effector.Main\Effector.Main\Effector.Main.vbproj", "{38BEE4BF-9238-459F-AF89-4DD94C4FD0DA}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Effector.Plugin.Interface", "..\Effector.Main\Effector.Plugin.Interface\Effector.Plugin.Interface.vbproj", "{7D14D864-2BDC-4785-80F4-320164C2D5E4}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Effector.Plugin.StoneCut", "Effector.Plugin.StoneCut\Effector.Plugin.StoneCut.vbproj", "{7C77F537-8235-40AB-B24A-4E71CFB96D2C}"
ProjectSection(ProjectDependencies) = postProject
{7D14D864-2BDC-4785-80F4-320164C2D5E4} = {7D14D864-2BDC-4785-80F4-320164C2D5E4}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{38BEE4BF-9238-459F-AF89-4DD94C4FD0DA}.Debug|Any CPU.ActiveCfg = Debug|x86
{38BEE4BF-9238-459F-AF89-4DD94C4FD0DA}.Debug|Any CPU.Build.0 = Debug|x86
{38BEE4BF-9238-459F-AF89-4DD94C4FD0DA}.Debug|x64.ActiveCfg = Debug|x64
{38BEE4BF-9238-459F-AF89-4DD94C4FD0DA}.Debug|x64.Build.0 = Debug|x64
{38BEE4BF-9238-459F-AF89-4DD94C4FD0DA}.Debug|x86.ActiveCfg = Debug|x86
{38BEE4BF-9238-459F-AF89-4DD94C4FD0DA}.Debug|x86.Build.0 = Debug|x86
{38BEE4BF-9238-459F-AF89-4DD94C4FD0DA}.Release|Any CPU.ActiveCfg = Release|x64
{38BEE4BF-9238-459F-AF89-4DD94C4FD0DA}.Release|Any CPU.Build.0 = Release|x64
{38BEE4BF-9238-459F-AF89-4DD94C4FD0DA}.Release|x64.ActiveCfg = Release|x64
{38BEE4BF-9238-459F-AF89-4DD94C4FD0DA}.Release|x64.Build.0 = Release|x64
{38BEE4BF-9238-459F-AF89-4DD94C4FD0DA}.Release|x86.ActiveCfg = Release|x86
{38BEE4BF-9238-459F-AF89-4DD94C4FD0DA}.Release|x86.Build.0 = Release|x86
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Debug|x64.ActiveCfg = Debug|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Debug|x64.Build.0 = Debug|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Debug|x86.ActiveCfg = Debug|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Debug|x86.Build.0 = Debug|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Release|Any CPU.Build.0 = Release|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Release|x64.ActiveCfg = Release|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Release|x64.Build.0 = Release|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Release|x86.ActiveCfg = Release|Any CPU
{7D14D864-2BDC-4785-80F4-320164C2D5E4}.Release|x86.Build.0 = Release|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Debug|x64.ActiveCfg = Debug|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Debug|x64.Build.0 = Debug|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Debug|x86.ActiveCfg = Debug|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Debug|x86.Build.0 = Debug|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Release|Any CPU.Build.0 = Release|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Release|x64.ActiveCfg = Release|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Release|x64.Build.0 = Release|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Release|x86.ActiveCfg = Release|Any CPU
{7C77F537-8235-40AB-B24A-4E71CFB96D2C}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {F9D87F62-BDA1-4B0C-BE15-C43A682829E8}
EndGlobalSection
EndGlobal
@@ -0,0 +1,66 @@
'----------------------------------------------------------------------------
' EgalTech 2015-2017
'----------------------------------------------------------------------------
' File : ConstGen.vb Data : 08.05.24 Versione : 2.6e1
' Contenuto : Modulo costanti generali.
'
'
'
' Modifiche : 08.05.24 ES Creazione modulo.
'
'
'----------------------------------------------------------------------------
Public Module ConstGen
' File con direttorio radice dei dati
Public Const DAT_FILE_NAME As String = "DataRoot.Ini"
Public Const S_DATA As String = "Data"
Public Const K_DATAROOT As String = "DataRoot"
'' File con dati di licenza
'Public Const LIC_FILE_NAME As String = "EgtBEAMWALL.lic"
'Public Const S_LICENCE As String = "Licence"
'Public Const K_LOCKID As String = "LockId"
'Public Const K_KEY As String = "Key"
' Abilitazioni licenza
Public Enum KEY_OPT As UInteger
SUPERVISOR = 1
End Enum
' Sottodirettorio di configurazione
Public Const CONF_DIR As String = "Config"
' Sottodirettorio delle risorse
Public Const RES_DIR As String = "Resources"
' Sottodirettorio script
Public Const SCRIPT_DIR As String = "Script"
' Sottodirettorio temporaneo
Public Const TEMP_DIR As String = "Temp"
'' Sottodirettorio per Cam automatico
'Public Const PROJS_DIR As String = "Projs"
'' Sottodirettorio per Csv automatico
'Public Const PRODS_DIR As String = "Prods"
'' Sottodirettorio per Macro
'Public Const MACRO_DIR As String = "Macro"
'' Sottodirettorio per Magazzino
'Public Const WAREHOUSE_DIR As String = "Warehouse"
'' Sottodirettorio per lavorazioni travi
'Public Const BEAM_DIR As String = "Beam"
'' Sottodirettorio per lavorazioni pareti
'Public Const WALL_DIR As String = "Wall"
'' Sottodirettorio di default per il salvataggio con nome
'Public Const SAVE_DFL_NAMEDIR As String = "MyProjects"
'' Sottodirettorio di default per le macchine
'Public Const MACHINES_DFL_DIR As String = "Machines"
'' Sottodirettorio di default per toolmakers
'Public Const TOOLMAKERS_DFL_DIR As String = "ToolMakers"
'' Nome file Lua con le funzioni di attrezzaggio
'Public Const SETUP_LUA As String = "SetUp.lua"
'' Nome eseguibile per stampa
'Public Const ZEBRAPRINTER_EXE As String = "ZebraPrinterUtilitiesD32.exe"
'' Sottodirettorio di default per macro
'Public Const MACRO_DFL_DIR As String = "Macro"
End Module
@@ -0,0 +1,56 @@
'----------------------------------------------------------------------------
' EgalTech 2015-2024
'----------------------------------------------------------------------------
' File : ConstIni.vb Data : 08.05.24 Versione : 2.6e1
' Contenuto : Modulo costanti sezione e chiavi per file Ini.
'
'
'
' Modifiche : 08.05.24 ES Creazione modulo.
'
'
'----------------------------------------------------------------------------
Module ConstIni
Public Const INI_FILE_NAME As String = "Effector.Plugin.StoneCut.ini"
Public Const S_GENERAL As String = "General"
Public Const K_CAMEXEPATH As String = "CAMExePath"
Public Const K_DOORCREATOREXEPATH As String = "DoorCreatorExePath"
Public Const K_BACKUPDIR As String = "BackupDir"
Public Const K_RESOURCESDIR As String = "ResourcesDir"
Public Const K_DDFDIR As String = "DDFDir"
Public Const K_DDTDIR As String = "DDTDir"
Public Const K_GENDDFDIR As String = "GenDDFDir"
Public Const K_CSV As String = "CSV"
Public Const K_ISCSVOUTPUTENABLED As String = "IsCSVOutputEnabled"
Public Const K_CSVOUTPUTPATH As String = "CSVOutputPath"
Public Const K_LASTCSVDIR As String = "LastCsvDir"
Public Const S_CSV As String = "CSV"
Public Const K_DDFNAME As String = "DDFName"
Public Const K_QUANTITY As String = "Quantity"
Public Const K_HEIGHT As String = "Height"
Public Const K_WIDTH As String = "Width"
Public Const K_THICKNESS As String = "Thickness"
Public Const K_SWING As String = "Swing"
Public Const K_PHASE As String = "Phase"
Public Const K_STATE As String = "State"
Public Const K_PROGRAMSENT As String = "ProgramSent"
Public Const K_PROGRAMSTART As String = "ProgramStart"
Public Const K_PROGRAMEND As String = "ProgramEnd"
Public Const K_MANUALADDEDDOORNAME As String = "ManualAddedDoorName"
Public Const K_DELIMITER As String = "Delimiter"
Public Const S_DEBUG As String = "Debug"
Public Const K_VARIABLELIST As String = "VariableList"
Public Const K_VARIABLEONDRAW As String = "VariableOnDraw"
Public Const K_MACHINECOMMANDS As String = "MachineCommands"
Public Const K_DOORCIRCLIST As String = "DoorCircList"
Public Const K_DOORPRESENCE As String = "DoorPresence"
Public Const K_DOORINDEX As String = "DoorIndex"
Public Const S_NC As String = "NC"
Public Const K_NC_SIMULATE As String = "NcSimulate"
End Module
@@ -0,0 +1,272 @@
<Grid x:Class="DoorListPageV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Effector.Plugin.StoneCut">
<Grid.Resources>
<local:StateToSelColorConverter x:Key="StateToSelColorConverter"/>
<local:DDTListToBooleanConverter x:Key="DDTListToBooleanConverter"/>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="3"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Border BorderThickness="0"
Padding="3"
BorderBrush="Transparent"
Background="{StaticResource Omag_DarkGray}">
<StackPanel Orientation="Horizontal"
IsEnabled="{Binding bExecButton_IsEnabled}">
<Button ToolTip="Mette in coda di produzione tutte le porte"
Command="{Binding ProduceAll_Command}"
IsEnabled="{Binding bExecButton_IsEnabled}"
Style="{StaticResource Table_Button}">
<Image Source="../Resources/DoorListPage/ProduceAll.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>
<Button ToolTip="Riporta tutte le porte pronte per essere lavorate allo stato Verificate state"
Command="{Binding ResetProductionQueue_Command}"
Style="{StaticResource Table_Button}">
<Image Source="../Resources/DoorListPage/ResetProduction.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>
<Button ToolTip="Cancella tutte le porte presenti in lista"
Command="{Binding DeleteAll_Command}"
IsEnabled="{Binding bExecButton_IsEnabled}"
Style="{StaticResource Table_Button}">
<Image Source="../Resources/DoorListPage/DeleteAll.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>
<!--<Button ToolTip="Mette in coda di produzione la porta selezionata"
Command="{Binding Produce_Command}"
Style="{StaticResource Button.DoorList}">
<Image Source="../Resources/DoorListPage/Produce.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>-->
<!--<Button ToolTip="Sposta su"
Command="{Binding MoveUp_Command}"
Style="{StaticResource Button.DoorList}">
<Image Source="../Resources/DoorListPage/MoveUp.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>
<Button ToolTip="Sposta giù"
Command="{Binding MoveDown_Command}"
Style="{StaticResource Button.DoorList}">
<Image Source="../Resources/DoorListPage/MoveDown.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>-->
<!--<Button ToolTip="Mark the selected door as not to be produced"
Command="{Binding NotProduceDoor_Command}"
IsEnabled="{Binding bExecButton_IsEnabled}"
Style="{StaticResource Button.DoorList}">
<Image Source="../Resources/DoorListPage/NotProduce.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>-->
<!--<Button ToolTip="Aggiunge una porta alla lista"
Command="{Binding AddDoor_Command}"
IsEnabled="{Binding bExecButton_IsEnabled}"
Style="{StaticResource Button.DoorList}">
<Image Source="../Resources/DoorListPage/Add.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>-->
<!--<Button ToolTip="Copia la porta selezionata"
Command="{Binding CopyDoor_Command}"
IsEnabled="{Binding bExecButton_IsEnabled}"
Style="{StaticResource Button.DoorList}">
<Image Source="../Resources/DoorListPage/Copy.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>-->
<!--<Button ToolTip="Copia Multipla della porta selezionata"
Command="{Binding MultipleCopyDoor_Command}"
IsEnabled="{Binding bExecButton_IsEnabled}"
Style="{StaticResource Button.DoorList}">
<Image Source="../Resources/DoorListPage/MultipleCopy.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>-->
<!--<Button ToolTip="Cancella porta selezionata"
Command="{Binding Delete_Command}"
IsEnabled="{Binding bExecButton_IsEnabled}"
Style="{StaticResource Button.DoorList}">
<Image Source="../Resources/DoorListPage/Delete.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>-->
<!--<Button ToolTip="Verifica tutte le porte in stato Non Verificata"
Command="{Binding Verify_Command}"
IsEnabled="{Binding bExecButton_IsEnabled}"
Style="{StaticResource Button.DoorList}">
<Image Source="../Resources/DoorListPage/Verify.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>-->
<!--<TextBlock Text="{Binding sExecPercentage}"
VerticalAlignment="Center"
Margin="10,0,5,0"
Visibility="{Binding ExecPercentage_Visibility, Mode=OneWay}"/>
<ProgressBar Minimum="0"
Maximum="100"
Value="{Binding dExecPercentage, Mode=OneWay}"
Height="15"
Width="100"
Margin="5,0,0,0"
Visibility="{Binding ExecPercentage_Visibility}"/>-->
</StackPanel>
</Border>
<FrameworkElement x:Name="dummyElement" Visibility="Collapsed"/>
<DataGrid Grid.Row="2"
ItemsSource="{Binding DoorList}"
SelectedItem="{Binding SelDoor}"
AutoGenerateColumns="False"
CanUserDeleteRows="False"
CanUserResizeRows="False"
SelectionMode="Single"
SelectionUnit="FullRow"
CanUserSortColumns="False"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
BeginningEdit="DoorList_BeginningEdit"
HorizontalGridLinesBrush="Transparent"
VerticalGridLinesBrush="Transparent"
ColumnHeaderHeight="32"
HeadersVisibility="Column"
FontSize="12"
FontFamily="/Resources/Fonts/#Roboto"
FontWeight="Regular"
RowHeight="32"
BorderThickness="0"
Background="{StaticResource Omag_LightGray}">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="{StaticResource Omag_DarkGray}"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="FontSize" Value="15"/>
<Setter Property="Padding" Value="10,0,10,0"/>
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="ID"
Binding="{Binding nId}"
Width="Auto"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn.DoorList}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}"/>
<DataGridTextColumn Header="File Name"
Binding="{Binding sFileNameWithoutExtension}"
Width="Auto"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn.DoorList}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}"/>
<DataGridTemplateColumn Width="Auto">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Command="{Binding DataContext.Produce_Command, RelativeSource={RelativeSource AncestorType={x:Type local:DoorListPageV}}}"
CommandParameter="{Binding}"
Style="{StaticResource Table_Button}">
<Image Source="../Resources/DoorListPage/Produce.png"/>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="# Table"
Binding="{Binding nTable}"
Width="Auto"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn.DoorList}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}"/>
<DataGridTextColumn Header="File Dimension"
Binding="{Binding sFileDimension}"
Width="Auto"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn.DoorList}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}"/>
<DataGridTextColumn Header="State"
Binding="{Binding nState}"
Width="Auto"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn.DoorList}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}"/>
<DataGridTextColumn Header="Machining Start"
Binding="{Binding sMachiningStart}"
Width="Auto"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn.DoorList}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}"/>
<DataGridTextColumn Header="Machining End"
Binding="{Binding sMachiningEnd}"
Width="Auto"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn.DoorList}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}"/>
<DataGridTextColumn Header="Machining Time"
Binding="{Binding sMachiningTime}"
Width="Auto"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn.DoorList}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}"/>
<DataGridTemplateColumn Width="Auto">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Command="{Binding DataContext.MoveUp_Command, RelativeSource={RelativeSource AncestorType={x:Type local:DoorListPageV}}}"
CommandParameter="{Binding}"
Style="{StaticResource Table_Button}">
<Image Source="../Resources/DoorListPage/MoveUp.png"/>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="Auto">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Command="{Binding DataContext.MoveDown_Command, RelativeSource={RelativeSource AncestorType={x:Type local:DoorListPageV}}}"
CommandParameter="{Binding}"
Style="{StaticResource Table_Button}">
<Image Source="../Resources/DoorListPage/MoveDown.png"/>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="Auto">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Command="{Binding NotProduce_Command}"
Style="{StaticResource Table_Button}">
<Image Source="../Resources/DoorListPage/NotProduce.png"/>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="Auto">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Command="{Binding DataContext.Copy_Command, RelativeSource={RelativeSource AncestorType={x:Type local:DoorListPageV}}}"
CommandParameter="{Binding}"
Style="{StaticResource Table_Button}">
<Image Source="../Resources/DoorListPage/Copy.png"/>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="Auto">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Command="{Binding DataContext.Delete_Command, RelativeSource={RelativeSource AncestorType={x:Type local:DoorListPageV}}}"
CommandParameter="{Binding}"
Style="{StaticResource Table_Button}">
<Image Source="../Resources/DoorListPage/Delete.png"/>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
<!--<DataGrid.InputBindings>
<KeyBinding Key="Delete" Command="{Binding Tag.SelectedMachGroup.DeleteMachGroup_Command,
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:RawPartListV}}}"/>
</DataGrid.InputBindings>-->
<DataGrid.RowStyle>
<Style TargetType="DataGridRow" BasedOn="{StaticResource RowDataGrid_CustomHighLight}">
<Setter Property="Background" Value="{Binding Background}"/>
<Setter Property="Foreground" Value="{Binding Foreground}"/>
<Setter Property="BorderBrush" Value="{Binding nState, Converter={StaticResource StateToSelColorConverter}}"/>
</Style>
</DataGrid.RowStyle>
</DataGrid>
</Grid>
@@ -0,0 +1,13 @@
Public Class DoorListPageV
' funzione che impedisce di editare le righe che sono gia' in produzione
Private Sub DoorList_BeginningEdit(sender As Object, e As DataGridBeginningEditEventArgs)
'If IsNothing(e.Row) Then Return
'Dim RowVM As Door = DirectCast(e.Row.DataContext, Door)
'' se in produzione impedisco modifica dei parametri
'If RowVM.nState >= Door.PartProgramStates.READY_FOR_PRODUCTION Then
' e.Cancel = True
'End If
End Sub
End Class
@@ -0,0 +1,921 @@
Imports System.Collections.ObjectModel
Imports System.IO
Imports Newtonsoft.Json
Imports System.Windows.Threading
Imports System.Text.RegularExpressions
Imports System.Security.Cryptography
Imports Newtonsoft.Json.Linq
Imports Effector.Plugin.StoneCut.Door
Imports System.Globalization
Imports System.Diagnostics
Imports Effector.Plugin.Lib
Public Class DoorListPageVM
Inherits VMBase
Private m_BackupTimer As New DispatcherTimer
Private m_WriteCSVTimer As New DispatcherTimer
Private m_RefreshGraphicsTimer As New DispatcherTimer
Private m_ExecProcessManager As ExecProcessManager
Private m_ReadPartProgramFolderTimer As New DispatcherTimer
Private m_sPartProgramFolderPath As String
Private m_DoorList As New ObservableCollection(Of Door)
Private m_bResetList As Boolean = False
Public ReadOnly Property bResetList As Boolean
Get
Return m_bResetList
End Get
End Property
Friend Sub ResetResetList()
m_bResetList = False
End Sub
Public ReadOnly Property DoorList As ObservableCollection(Of Door)
Get
Return m_DoorList
End Get
End Property
Private m_SelDoor As Door
Public Property SelDoor As Door
Get
Return m_SelDoor
End Get
Set(value As Door)
m_SelDoor = value
End Set
End Property
Private m_DDTList As New ObservableCollection(Of String)
Public ReadOnly Property DDTList As ObservableCollection(Of String)
Get
Return m_DDTList
End Get
End Property
Private m_ManualAddedDoorName As String = "Manual"
Public ReadOnly Property ManualAddedDoorName As String
Get
Return m_ManualAddedDoorName
End Get
End Property
Private m_bExecButton_IsEnabled As Boolean = True
Public ReadOnly Property bExecButton_IsEnabled As Boolean
Get
Return m_bExecButton_IsEnabled
End Get
End Property
Private Sub SetExecButtonIsEnabled(bValue As Boolean)
m_bExecButton_IsEnabled = bValue
NotifyPropertyChanged(NameOf(bExecButton_IsEnabled))
End Sub
Private m_nModifyIndex As Integer = 0
Private m_nBackupindex As Integer = 0
Private m_bWritingBackup As Boolean = False
Private m_sCSVOutDirPath As String = ""
Private m_nExecIncrement As Integer = 0
Private m_nExecutedArgsCount As Integer = 0
Public ReadOnly Property dExecPercentage As Double
Get
If m_bCreatingDdfs Then
Return 5 / m_nTotCreatingDdf * m_nCurrCreatingDdf
End If
If IsNothing(m_ExecProcessManager) Then Return 0
Dim dExecIncrement As Double = If(m_ExecProcessManager.nArgsInQueue = 0, 0, Math.Min(28, m_nExecIncrement) / 34)
Return (m_ExecProcessManager.nExecutedArgsCounter + dExecIncrement) / (m_ExecProcessManager.nExecutedArgsCounter + m_ExecProcessManager.nArgsInQueue) * 100
End Get
End Property
Public ReadOnly Property sExecPercentage As String
Get
Return DoubleToString(dExecPercentage, 1) & "%"
End Get
End Property
Public ReadOnly Property ExecPercentage_Visibility As Visibility
Get
Return If((Not IsNothing(m_ExecProcessManager) AndAlso m_ExecProcessManager.ExecutionThreadStatus = ExecProcessManager.ExecutionThreadStatuses.RUNNING) OrElse m_bCreatingDdfs, Visibility.Visible, Visibility.Collapsed)
End Get
End Property
Private m_bCreatingDdfs As Boolean
Private m_nTotCreatingDdf As Integer
Private m_nCurrCreatingDdf As Integer
' Definizione comandi
Private m_cmdProduce As ICommand
Private m_cmdProduceAll As ICommand
Private m_cmdResetProductionQueue As ICommand
Private m_cmdMoveUp As ICommand
Private m_cmdMoveDown As ICommand
Private m_cmdNotProduce As ICommand
Private m_cmdCopy As ICommand
' Private m_cmdMultipleCopy As ICommand
Private m_cmdDelete As ICommand
Private m_cmdDeleteAll As ICommand
#Region "CONSTRUCTOR"
Sub New()
' imposto riferimento in Map
Map.SetRefDoorListPageVM(Me)
' leggo backup
Dim sBackupDirPath As String = ""
GetPluginPrivateProfileString(S_GENERAL, "BackupDir", "", sBackupDirPath)
Dim sBackupFilePath As String = sBackupDirPath & "\Backup.json"
Read(sBackupFilePath)
m_BackupTimer.Interval = New TimeSpan(0, 0, 1)
AddHandler m_BackupTimer.Tick, AddressOf BackupTimer_Tick
m_WriteCSVTimer.Interval = New TimeSpan(0, 1, 0)
AddHandler m_WriteCSVTimer.Tick, AddressOf WriteCSVTimer_Tick
m_RefreshGraphicsTimer.Interval = New TimeSpan(0, 0, 1)
AddHandler m_RefreshGraphicsTimer.Tick, AddressOf RefreshGraphicsTimer_Tick
m_BackupTimer.Start()
' verifico path salvataggio CSV
Dim bStartWriteCSV As Boolean = False
If GetPluginPrivateProfileInt(S_GENERAL, K_ISCSVOUTPUTENABLED, 0) = 1 Then
bStartWriteCSV = True
If GetPluginPrivateProfileString(S_GENERAL, K_CSVOUTPUTPATH, "", m_sCSVOutDirPath) = 0 Then
bStartWriteCSV = False
MessageBox.Show("Path di salvataggio CSV non impostata! Impossibile creare file CSV!", "Errore!", MessageBoxButton.OK, MessageBoxImage.Error)
End If
If bStartWriteCSV AndAlso Not Directory.Exists(m_sCSVOutDirPath) Then
bStartWriteCSV = False
MessageBox.Show("Path di salvataggio CSV impostata non esiste! Impossibile creare file CSV!", "Errore!", MessageBoxButton.OK, MessageBoxImage.Error)
End If
If bStartWriteCSV Then
m_WriteCSVTimer.Start()
End If
End If
m_RefreshGraphicsTimer.Start()
' leggo path cartella dei partprogram
GetPluginPrivateProfileString(S_GENERAL, "PartProgramFolder", "", m_sPartProgramFolderPath)
If Not Directory.Exists(m_sPartProgramFolderPath) Then
MessageBox.Show("Folder not found! Folder path not configured correctly")
End If
' avvio timer di copia file
AddHandler m_ReadPartProgramFolderTimer.Tick, AddressOf ReadPartProgramFolderTimer_Tick
m_ReadPartProgramFolderTimer.Interval = TimeSpan.FromSeconds(1)
m_ReadPartProgramFolderTimer.Start()
End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
Private Sub ReadPartProgramFolderTimer_Tick(sender As Object, e As EventArgs)
Dim FileList() As String = Directory.GetFiles(m_sPartProgramFolderPath)
If FileList.Count = 0 Then Return
' copio file e li metto in lista
Dim sPartProgramDirPath As String = ""
GetPluginPrivateProfileString(S_GENERAL, "PartProgramDir", "", sPartProgramDirPath)
For nFileIndex = 0 To FileList.Count - 1
Dim bFileMove As Boolean = False
Dim sNewFilePath As String = sPartProgramDirPath & "\" & Path.GetFileName(FileList(nFileIndex))
Try
File.Move(FileList(nFileIndex), sNewFilePath)
bFileMove = True
Catch ex As Exception
MessageBox.Show("Impossible loading file " & FileList(0))
End Try
If bFileMove Then
Dim CurrFileInfo As New FileInfo(sNewFilePath)
Dim CurrFileLength As Double = CDbl(CurrFileInfo.Length)
Dim CurrFileLines = File.ReadLines(sNewFilePath).Take(10).ToList()
Dim nId As Integer = 0
Dim nTable As Integer = 0
For nLineIndex = 0 To CurrFileLines.Count - 1
Dim IdMatch As Match = Regex.Match(CurrFileLines(nLineIndex), ".*\(ID=(\d+)\)")
If Not IsNothing(IdMatch) AndAlso Not String.IsNullOrWhiteSpace(IdMatch.Value) Then
Integer.TryParse(IdMatch.Groups(1).Value, nId)
End If
Dim TableMatch As Match = Regex.Match(CurrFileLines(nLineIndex), ".*\(TABLE=(\d+)\)")
If Not IsNothing(TableMatch) AndAlso Not String.IsNullOrWhiteSpace(TableMatch.Value) Then
Integer.TryParse(TableMatch.Groups(1).Value, nTable)
End If
If nId <> 0 AndAlso nTable <> 0 Then Exit For
Next
m_DoorList.Add(New Door(nId, Path.GetFileName(FileList(nFileIndex)), nTable, CurrFileLength))
End If
Next
WriteBackup()
End Sub
Public Sub Read(FilePath As String)
If Not File.Exists(FilePath) Then Return
Dim sReadedFile As String = File.ReadAllText(FilePath)
Dim JsonDoorList As List(Of JsonDoor) = JsonConvert.DeserializeObject(Of List(Of JsonDoor))(sReadedFile)
JsonDoorList = JsonDoorList.OrderBy(Of Integer)(Function(x) x.nListIndex).ToList()
Dim TempDoorList As ObservableCollection(Of Door) = New ObservableCollection(Of Door)((From JsonDoor In JsonDoorList
Select New Door(JsonDoor)).ToList())
'For Each CurrDoor In TempDoorList
' If CurrDoor.nState >= Door.PartProgramStates.READY_FOR_PRODUCTION AndAlso CurrDoor.nState < Door.PartProgramStates.MACHINE_1_END Then
' CurrDoor.SetState(Door.PartProgramStates.VERIFIED, False)
' End If
'Next
'WriteBackup()
m_DoorList = TempDoorList
End Sub
Public Sub Write(FilePath As String)
Dim JsonDoorList As New List(Of JsonDoor)
For nDoorIndex As Integer = 0 To m_DoorList.Count - 1
JsonDoorList.Add(New JsonDoor(nDoorIndex, m_DoorList(nDoorIndex)))
Next
Dim JsonFromWindow As String = JsonConvert.SerializeObject(JsonDoorList, Formatting.Indented)
If File.Exists(FilePath) Then
Dim sBackupFilePath As String = Path.ChangeExtension(FilePath, ".bck")
If File.Exists(sBackupFilePath) Then
Try
File.Delete(sBackupFilePath)
Catch ex As Exception
Map.refSupervisorFunction.PlgOutLog("Error! Impossible deleting backup file!")
End Try
End If
Try
File.Move(FilePath, sBackupFilePath)
Catch ex As Exception
Map.refSupervisorFunction.PlgOutLog("Error! Impossible renaming backup file!")
End Try
End If
File.WriteAllText(FilePath, JsonFromWindow)
End Sub
Private Sub WriteBackupCmd()
If m_bWritingBackup Then Return
m_bWritingBackup = True
m_nBackupindex = m_nModifyIndex
Dim sBackupDirPath As String = ""
GetPluginPrivateProfileString(S_GENERAL, K_BACKUPDIR, "", sBackupDirPath)
Dim sBackupFilePath As String = sBackupDirPath & "\Backup.json"
Write(sBackupFilePath)
m_bWritingBackup = False
End Sub
Friend Sub WriteBackup()
m_nModifyIndex += 1
End Sub
Private Sub BackupTimer_Tick(sender As Object, e As EventArgs)
If m_nBackupindex < m_nModifyIndex Then
WriteBackupCmd()
End If
End Sub
Private Sub WriteCSVTimer_Tick(sender As Object, e As EventArgs)
'SaveCSV()
End Sub
Private Sub RefreshGraphicsTimer_Tick(sender As Object, e As EventArgs)
'If IsNothing(m_ExecProcessManager) Then Return
'' ciclo su coda risultati
'Dim ArgumentsResult As ProcessArgsResult = m_ExecProcessManager.ArgumentsResultDequeue
'While Not IsNothing(ArgumentsResult)
' ' aggiorno risultato sulla porta
' Dim CurrRequestDoor As Door = m_DoorList.FirstOrDefault(Function(x) x.nId = ArgumentsResult.ProcessArgs.nId)
' If Not IsNothing(CurrRequestDoor) Then
' CurrRequestDoor.SetState(If(ArgumentsResult.nResult = 0, Door.PartProgramStates.VERIFIED, Door.PartProgramStates.VERIFICATION_FAILED))
' ' elimino file generati
' Dim sGenDDFDirPath As String = ""
' GetPluginPrivateProfileString(S_GENERAL, K_GENDDFDIR, "", sGenDDFDirPath)
' Dim sDoorFileName As String = Path.GetFileNameWithoutExtension(CurrRequestDoor.sFileName) & "_" & CurrRequestDoor.nId
' Try
' File.Delete(sGenDDFDirPath & "\" & sDoorFileName & ".tok")
' 'File.Delete(sGenDDFDirPath & "\" & sDoorFileName & "_2.tok")
' File.Delete(sGenDDFDirPath & "\" & sDoorFileName & ".cnc")
' 'File.Delete(sGenDDFDirPath & "\" & sDoorFileName & "_a.cnc")
' 'File.Delete(sGenDDFDirPath & "\" & sDoorFileName & "_b.cnc")
' File.Delete(sGenDDFDirPath & "\" & sDoorFileName & "_2.cnc")
' 'File.Delete(sGenDDFDirPath & "\" & sDoorFileName & "_2_a.cnc")
' File.Delete(sGenDDFDirPath & "\" & sDoorFileName & ".html")
' 'File.Delete(sGenDDFDirPath & "\" & sDoorFileName & "_2.html")
' 'If ArgumentsResult.nResult = 0 Then
' File.Delete(sGenDDFDirPath & "\" & sDoorFileName & ".log")
' 'End If
' ''File.Delete(sGenDDFDirPath & "\" & CurrRequestDoor.sDDFName & ".nge")
' File.Delete(sGenDDFDirPath & "\" & sDoorFileName & ".nge")
' 'File.Delete(sGenDDFDirPath & "\" & sDoorFileName & ".sest")
' 'File.Delete(sGenDDFDirPath & "\" & sDoorFileName & "_2.sest")
' 'Dim SestFiles() As String = System.IO.Directory.GetFiles(sGenDDFDirPath & "\", sDoorFileName & "*.sest")
' 'For Each FilePath In SestFiles
' ' File.Delete(FilePath)
' 'Next
' ''File.Delete(sGenDDFDirPath & "\" & CurrRequestDoor.sDDFName & ".txt")
' File.Delete(sGenDDFDirPath & "\" & sDoorFileName & ".txt")
' 'File.Delete(sGenDDFDirPath & "\" & sDoorFileName & "_2.txt")
' Catch ex As Exception
' End Try
' End If
' ' verifico se ci sono altre porte dello stesso tipo da aggiornare
' If m_AssociationList.ContainsKey(CurrRequestDoor.nId) Then
' Dim SameDoorList As List(Of Integer) = m_AssociationList(CurrRequestDoor.nId)
' For Each CurrDoorId In SameDoorList
' Dim CurrDoor As Door = m_DoorList.FirstOrDefault(Function(x) x.nId = CurrDoorId)
' If Not IsNothing(CurrDoor) Then
' If CopyGenDdfFile(CurrRequestDoor, CurrDoor) Then
' CurrDoor.SetState(If(ArgumentsResult.nResult = 0, Door.PartProgramStates.VERIFIED, Door.PartProgramStates.VERIFICATION_FAILED))
' End If
' End If
' Next
' End If
' WriteBackup()
' ArgumentsResult = m_ExecProcessManager.ArgumentsResultDequeue
'End While
'' aggiorno grafica
'If m_nExecutedArgsCount <> m_ExecProcessManager.nExecutedArgsCounter Then
' m_nExecutedArgsCount = m_ExecProcessManager.nExecutedArgsCounter
' m_nExecIncrement = 0
'ElseIf m_ExecProcessManager.nCalculatingProcesses > 0 Then
' m_nExecIncrement += 1
'End If
'If Not bExecButton_IsEnabled AndAlso m_ExecProcessManager.ExecutionThreadStatus = ExecProcessManager.ExecutionThreadStatuses.RUNNING Then
' NotifyPropertyChanged(NameOf(dExecPercentage))
' NotifyPropertyChanged(NameOf(sExecPercentage))
'End If
'If Not bExecButton_IsEnabled AndAlso m_ExecProcessManager.ExecutionThreadStatus = ExecProcessManager.ExecutionThreadStatuses.STOPPED Then
' SetExecButtonIsEnabled(True)
'End If
'NotifyPropertyChanged(NameOf(ExecPercentage_Visibility))
End Sub
Friend Function GetNextDoor() As Door
Dim NextDoor As Door = m_DoorList.FirstOrDefault(Function(x) x.nState = Door.PartProgramStates.READY_FOR_PRODUCTION)
If Not IsNothing(NextDoor) Then
Map.refSupervisorFunction.PlgOutLog("GetNextDoor: door " & NextDoor.nId & " sent to NC")
NextDoor.SetState(Door.PartProgramStates.SENT_TO_NC)
WriteBackup()
End If
Return NextDoor
End Function
Friend Function NewDoorId() As Integer
Dim nId As Integer = 1
If m_DoorList.Count > 0 Then
Dim nMaxId As Integer = m_DoorList.Max(Of Integer)(Function(x) x.nId)
nId = nMaxId + 1
End If
Return nId
End Function
Friend Sub ResetStateAfterReset()
'For Each Door In m_DoorList
' If Door.nState > Door.PartProgramStates.VERIFIED AndAlso Door.nState < Door.PartProgramStates.MACHINE_1_END Then
' Door.SetState(Door.PartProgramStates.VERIFIED, False)
' End If
'Next
End Sub
#End Region ' METHODS
#Region "COMMANDS"
#Region "Copy"
Public ReadOnly Property Copy_Command As ICommand
Get
If m_cmdCopy Is Nothing Then
m_cmdCopy = New Command(AddressOf CopyCmd)
End If
Return m_cmdCopy
End Get
End Property
Public Sub CopyCmd(CurrDoor As Door)
If IsNothing(CurrDoor) Then Return
Dim nId As Integer = NewDoorId()
Dim CopyDoor As Door = CurrDoor.Copy(nId)
If Not IsNothing(CopyDoor) Then
m_DoorList.Add(CurrDoor.Copy(nId))
End If
End Sub
#End Region ' CopyDoor
#Region "MoveUp"
Public ReadOnly Property MoveUp_Command As ICommand
Get
If m_cmdMoveUp Is Nothing Then
m_cmdMoveUp = New Command(AddressOf MoveUp)
End If
Return m_cmdMoveUp
End Get
End Property
Public Sub MoveUp(CurrDoor As Object)
If IsNothing(CurrDoor) Then Return
Dim nOldIndex As Integer = m_DoorList.IndexOf(CurrDoor)
If nOldIndex = 0 Then Return
If m_DoorList(nOldIndex - 1).nState >= Door.PartProgramStates.READY_FOR_PRODUCTION Then Return
m_DoorList.Move(nOldIndex, nOldIndex - 1)
WriteBackup()
End Sub
#End Region ' MoveUp
#Region "MoveDown"
Public ReadOnly Property MoveDown_Command As ICommand
Get
If m_cmdMoveDown Is Nothing Then
m_cmdMoveDown = New Command(AddressOf MoveDown)
End If
Return m_cmdMoveDown
End Get
End Property
Public Sub MoveDown(CurrDoor As Door)
If IsNothing(CurrDoor) OrElse CurrDoor.nState >= Door.PartProgramStates.READY_FOR_PRODUCTION Then Return
Dim nOldIndex As Integer = m_DoorList.IndexOf(CurrDoor)
If nOldIndex = m_DoorList.Count - 1 Then Return
m_DoorList.Move(nOldIndex, nOldIndex + 1)
WriteBackup()
End Sub
#End Region ' MoveDown
#Region "Delete"
Public ReadOnly Property Delete_Command As ICommand
Get
If m_cmdDelete Is Nothing Then
m_cmdDelete = New Command(AddressOf Delete)
End If
Return m_cmdDelete
End Get
End Property
Public Sub Delete(CurrDoor As Door)
If m_DoorList.Count = 0 OrElse IsNothing(CurrDoor) Then Return
Dim bReset As Boolean = True
'If Not LuaGetGlobVar("bReset", bReset) OrElse Not bReset Then
' If (SelDoor.nState >= Door.PartProgramStates.READY_FOR_PRODUCTION AndAlso SelDoor.nState < Door.PartProgramStates.MACHINE_1_END) Then Return
'End If
If MessageBox.Show("Sei sicuro di voler cancellare la porta selezionata?", "Avviso", MessageBoxButton.YesNo, MessageBoxImage.Warning) = MessageBoxResult.Yes Then
' cancello file
Dim sPartProgramDirPath As String = ""
GetPluginPrivateProfileString(S_GENERAL, "PartProgramDir", "", sPartProgramDirPath)
Try
File.Delete(sPartProgramDirPath & "\" & CurrDoor.sFileName)
Catch ex As Exception
End Try
m_DoorList.Remove(SelDoor)
WriteBackup()
End If
End Sub
#End Region ' Delete
#Region "DeleteAll"
Public ReadOnly Property DeleteAll_Command As ICommand
Get
If m_cmdDeleteAll Is Nothing Then
m_cmdDeleteAll = New Command(AddressOf DeleteAll)
End If
Return m_cmdDeleteAll
End Get
End Property
Public Sub DeleteAll()
If m_DoorList.Count = 0 Then Return
Dim bReset As Boolean = True
'If Not LuaGetGlobVar("bReset", bReset) OrElse Not bReset Then
' MessageBox.Show("Impossibile cancellare tutte le porte!" & Environment.NewLine & "La macchina deve essere in stato Reset per poter cancellare tutte le porte!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning)
' Return
'End If
'' verifico che tutte le porte siano in stato prodotto o da non produrre
'Dim bAllProduced As Boolean = True
'For Each CsvDoor In m_DoorList
' If CsvDoor.nState <> PartProgramStates.MACHINE_1_END AndAlso CsvDoor.nState <> PartProgramStates.PRODUCED AndAlso CsvDoor.nState <> PartProgramStates.NOTPRODUCE AndAlso CsvDoor.nState <> PartProgramStates.VERIFICATION_FAILED AndAlso CsvDoor.nState <> PartProgramStates.VERIFIED Then
' bAllProduced = False
' End If
'Next
'If Not bAllProduced Then
' MessageBox.Show("Impossibile cancellare tutte le porte!" & Environment.NewLine & "Per cancellare tutte le porte, devono essere tutte non in lavorazione!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning)
' Return
'End If
If MessageBox.Show("Sei sicuro di voler cancellare tutte le porte?", "Info", MessageBoxButton.YesNo, MessageBoxImage.Information) = MessageBoxResult.Yes Then
For PartProgramIndex = m_DoorList.Count - 1 To 0 Step -1
' cancello file
Dim sPartProgramDirPath As String = ""
GetPluginPrivateProfileString(S_GENERAL, "PartProgramDir", "", sPartProgramDirPath)
Try
File.Delete(sPartProgramDirPath & "\" & m_DoorList(PartProgramIndex).sFileName)
Catch ex As Exception
End Try
m_DoorList.RemoveAt(PartProgramIndex)
Next
WriteBackup()
'' cancello backup lua per ripartire pulito
'Try
' Dim sBackupDirPath As String = ""
' GetPluginPrivateProfileString(S_GENERAL, K_BACKUPDIR, "", sBackupDirPath)
' Dim sLuaBackupFilePath As String = sBackupDirPath & "\LuaBackup.json"
' File.Delete(sLuaBackupFilePath)
'Catch ex As Exception
' Map.refSupervisorFunction.PlgOutLog("Fallita cancellazione del file LuaBackup!")
'End Try
End If
End Sub
#End Region ' DeleteAll
#Region "Produce"
Public ReadOnly Property Produce_Command As ICommand
Get
If m_cmdProduce Is Nothing Then
m_cmdProduce = New Command(AddressOf Produce)
End If
Return m_cmdProduce
End Get
End Property
Public Sub Produce(CurrDoor As Door)
ProduceDoor(CurrDoor)
WriteBackup()
End Sub
Public Sub ProduceDoor(DoorToProduce As Door, Optional bWriteBackup As Boolean = True)
If IsNothing(DoorToProduce) Then Return
' la sposto dopo l'ultima da produrre
Dim nNewIndex As Integer = m_DoorList.IndexOf(m_DoorList.FirstOrDefault(Function(x) x.nState < Door.PartProgramStates.READY_FOR_PRODUCTION))
Dim nOldIndex As Integer = m_DoorList.IndexOf(DoorToProduce)
m_DoorList.Move(nOldIndex, nNewIndex)
DoorToProduce.SetState(Door.PartProgramStates.READY_FOR_PRODUCTION, bWriteBackup)
End Sub
#End Region ' Produce
#Region "ProduceAll"
Public ReadOnly Property ProduceAll_Command As ICommand
Get
If m_cmdProduceAll Is Nothing Then
m_cmdProduceAll = New Command(AddressOf ProduceAll)
End If
Return m_cmdProduceAll
End Get
End Property
Public Sub ProduceAll()
If m_DoorList.Count = 0 Then Return
For nDoorIndex = 0 To m_DoorList.Count - 1
Dim CurrDoor As Door = m_DoorList(nDoorIndex)
If CurrDoor.nState <> Door.PartProgramStates.MACHINE_START AndAlso CurrDoor.nState <> Door.PartProgramStates.PRODUCED Then
ProduceDoor(CurrDoor, False)
End If
Next
WriteBackup()
End Sub
#End Region ' ProduceAll
#Region "ResetProductionQueue"
Public ReadOnly Property ResetProductionQueue_Command As ICommand
Get
If m_cmdResetProductionQueue Is Nothing Then
m_cmdResetProductionQueue = New Command(AddressOf ResetProductionQueueCmd)
End If
Return m_cmdResetProductionQueue
End Get
End Property
Public Sub ResetProductionQueueCmd()
ResetProductionQueue()
WriteBackup()
End Sub
Public Sub ResetProductionQueue()
For Each Door In m_DoorList
If Door.nState = Door.PartProgramStates.READY_FOR_PRODUCTION OrElse Door.nState = Door.PartProgramStates.SENT_TO_NC Then
Door.SetState(Door.PartProgramStates.NULL)
End If
Next
m_bResetList = True
End Sub
#End Region ' ResetProductionQueue
#End Region ' COMMANDS
End Class
Public Class Door
Inherits VMBase
Public Enum SWINGTYPE As Integer
UNDEFINED = 0
RIGHT = 1
LEFT = 2
End Enum
Private Shared m_refWriteBackup As Action
Public Enum PartProgramStates As Integer
NULL = 0
READY_FOR_PRODUCTION = 1
SENT_TO_NC = 2
MACHINE_START = 3
PRODUCED = 4
NOTPRODUCE = 10
End Enum
Private m_nId As Integer
Public ReadOnly Property nId As Integer
Get
Return m_nId
End Get
End Property
Private m_sFileName As String
Public Property sFileName As String
Get
Return m_sFileName
End Get
Set(value As String)
m_sFileName = value
End Set
End Property
Public ReadOnly Property sFileNameWithoutExtension As String
Get
Return If(String.IsNullOrWhiteSpace(m_sFileName), "", Path.GetFileNameWithoutExtension(m_sFileName))
End Get
End Property
Private m_nTable As Integer
Public ReadOnly Property nTable As Integer
Get
Return m_nTable
End Get
End Property
Private m_dFileDimension As Double
Public ReadOnly Property dFileDimension As Double
Get
Return m_dFileDimension
End Get
End Property
Public ReadOnly Property sFileDimension As String
Get
Return DoubleToString(m_dFileDimension / 1000, 2) & "Kb"
End Get
End Property
Private m_nState As PartProgramStates = PartProgramStates.NULL
Public ReadOnly Property nState As PartProgramStates
Get
Return m_nState
End Get
End Property
Friend Sub SetState(value As PartProgramStates, Optional bWriteBackup As Boolean = True, Optional bUpdate As Boolean = True)
m_nState = value
If bWriteBackup Then Map.refDoorListPageVM.WriteBackup()
If bUpdate Then
NotifyPropertyChanged(NameOf(nState))
NotifyPropertyChanged(NameOf(Background))
End If
End Sub
#Region "Statistics"
Private m_dtMachiningStart As DateTime = DateTime.MinValue
Friend ReadOnly Property dtMachiningStart As DateTime
Get
Return m_dtMachiningStart
End Get
End Property
Public ReadOnly Property sMachiningStart As String
Get
Return ConvertDateTimeToString(m_dtMachiningStart)
End Get
End Property
Friend Sub SetMachiningStart(dtMachiningStart As DateTime)
m_dtMachiningStart = dtMachiningStart
NotifyPropertyChanged(NameOf(sMachiningStart))
End Sub
'Friend Sub SetMachiningStart(Machining1Start As Long)
' m_dtMachiningStart = New DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(Machining1Start).ToLocalTime()
' NotifyPropertyChanged(NameOf(sMachiningStart))
'End Sub
Private m_dtMachiningEnd As DateTime = DateTime.MinValue
Friend ReadOnly Property dtMachiningEnd As DateTime
Get
Return m_dtMachiningEnd
End Get
End Property
Public ReadOnly Property sMachiningEnd As String
Get
Return ConvertDateTimeToString(m_dtMachiningEnd)
End Get
End Property
Friend Sub SetMachiningEnd(dtMachiningEnd As DateTime)
m_dtMachiningEnd = dtMachiningEnd
NotifyPropertyChanged(NameOf(sMachiningEnd))
NotifyPropertyChanged(NameOf(sMachiningTime))
End Sub
Public ReadOnly Property sMachiningTime As String
Get
If m_dtMachiningStart = DateTime.MinValue OrElse m_dtMachiningEnd = DateTime.MinValue Then Return String.Format("{0:c}", TimeSpan.Zero)
Return String.Format("{0:c}", (m_dtMachiningEnd - m_dtMachiningStart))
End Get
End Property
#End Region ' Statistics
Public ReadOnly Property Background As SolidColorBrush
Get
Select Case m_nState
Case PartProgramStates.NULL
Return Application.Current.FindResource("Omag_LightGray")
Case PartProgramStates.READY_FOR_PRODUCTION
Return Dictionary.Effector_LightBlue_Status
Case PartProgramStates.NOTPRODUCE
Return Dictionary.Effector_Yellow_Status
Case PartProgramStates.MACHINE_START
Return Dictionary.Effector_Blue_Status
Case PartProgramStates.PRODUCED
Return Dictionary.Effector_Gray_Status
Case Else
Return Brushes.LightGray
End Select
End Get
End Property
Public ReadOnly Property Foreground As SolidColorBrush
Get
Select Case m_nState
Case PartProgramStates.NULL
Return Brushes.White
Case PartProgramStates.NOTPRODUCE
Return Dictionary.Effector_Yellow_Status
Case PartProgramStates.MACHINE_START
Return Dictionary.Effector_Blue_Status
Case PartProgramStates.PRODUCED
Return Dictionary.Effector_Gray_Status
Case Else
Return Brushes.White
End Select
End Get
End Property
' Definizione comandi
Private m_cmdMoveUp As ICommand
Private m_cmdMoveDown As ICommand
Private m_cmdNotProduce As ICommand
Private m_cmdCopyDoor As ICommand
'Private m_cmdMultipleCopyDoor As ICommand
Private m_cmdDelete As ICommand
#Region "CONSTRUCTOR"
Sub New(nId As Integer, sFileName As String, nTable As Integer, dFileDimension As Double)
m_nId = nId
m_sFileName = sFileName
m_nTable = nTable
m_dFileDimension = dFileDimension
End Sub
Sub New(JsonDoor As JsonDoor)
m_nId = JsonDoor.nId
m_sFileName = JsonDoor.sFileName
m_nTable = JsonDoor.nTable
m_dFileDimension = JsonDoor.dFileDimension
End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
Friend Function Copy(nId As Integer) As Door
Dim sPartProgramDirPath As String = ""
GetPluginPrivateProfileString(S_GENERAL, "PartProgramDir", "", sPartProgramDirPath)
Dim nCopyIndex As Integer = 1
Dim sFileExtension As String = Path.GetExtension(m_sFileName)
Dim sFileName As String = Path.GetFileNameWithoutExtension(m_sFileName)
While File.Exists(sPartProgramDirPath & "\" & sFileName & "_" & nCopyIndex & sFileExtension)
nCopyIndex += 1
End While
Dim bFileCopy As Boolean = False
Try
File.Copy(sPartProgramDirPath & "\" & m_sFileName, sPartProgramDirPath & "\" & sFileName & "_" & nCopyIndex & sFileExtension)
bFileCopy = True
Catch ex As Exception
End Try
If bFileCopy Then
Return New Door(nId, sFileName & "_" & nCopyIndex & sFileExtension, m_nTable, m_dFileDimension)
Else Return Nothing
End If
End Function
#End Region ' METHODS
#Region "COMMANDS"
#Region "NotProduce"
Public ReadOnly Property NotProduce_Command As ICommand
Get
If m_cmdNotProduce Is Nothing Then
m_cmdNotProduce = New Command(AddressOf NotProduce)
End If
Return m_cmdNotProduce
End Get
End Property
Public Sub NotProduce()
SetState(If(nState = Door.PartProgramStates.NULL, Door.PartProgramStates.NOTPRODUCE, Door.PartProgramStates.NULL))
End Sub
#End Region ' NotProduceDoor
#End Region ' COMMANDS
End Class
Public Class CustomerParameter
Private m_sHeader As String
Public ReadOnly Property sHeader As String
Get
Return m_sHeader
End Get
End Property
Private m_sValue As String
Public ReadOnly Property sValue As String
Get
Return m_sValue
End Get
End Property
Friend Sub SetValue(value As String)
m_sValue = value
End Sub
Sub New(sHeader As String, sValue As String)
m_sHeader = sHeader
m_sValue = sValue
End Sub
End Class
Public Class StateToSelColorConverter
Implements IValueConverter
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.Convert
If Not TypeOf value Is PartProgramStates Then Return Brushes.Aqua
'Select Case value
' Case PartProgramStates.LOADED_FROM_CSV
' Return Dictionary.Effector_White_SelStatus
' Case PartProgramStates.VERIFIED
' Return Dictionary.Effector_Green_SelStatus
' Case PartProgramStates.VERIFICATION_FAILED
' Return Dictionary.Effector_Red_SelStatus
' Case PartProgramStates.SKIPPED, PartProgramStates.NOTPRODUCE
' Return Dictionary.Effector_Yellow_SelStatus
' Case PartProgramStates.READY_FOR_PRODUCTION, PartProgramStates.ON_LOAD_STATION
' Return Dictionary.Effector_LightBlue_SelStatus
' Case PartProgramStates.MACHINE_1_START
' Return Dictionary.Effector_Blue_SelStatus
' Case PartProgramStates.MACHINE_1_END, PartProgramStates.PRODUCED
' Return Dictionary.Effector_Gray_SelStatus
' Case Else
' Return Dictionary.Effector_White_SelStatus
'End Select
End Function
Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.ConvertBack
Throw New NotImplementedException()
End Function
End Class
Public Class DDTListToBooleanConverter
Implements IValueConverter
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.Convert
If Not TypeOf value Is ObservableCollection(Of String) Then Return False
Return DirectCast(value, ObservableCollection(Of String)).Count = 0
End Function
Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.ConvertBack
Throw New NotImplementedException()
End Function
End Class
@@ -0,0 +1,228 @@
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
<RootNamespace>Effector.Plugin.StoneCut</RootNamespace>
<AssemblyName>Effector.Plugin.StoneCut</AssemblyName>
<OutputType>Library</OutputType>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<MyType>Custom</MyType>
<Deterministic>true</Deterministic>
<ProjectGuid>{7C77F537-8235-40AB-B24A-4E71CFB96D2C}</ProjectGuid>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<IncrementalBuild>true</IncrementalBuild>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>Effector.Plugin.StoneCut.xml</DocumentationFile>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42314</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<DebugSymbols>false</DebugSymbols>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<IncrementalBuild>false</IncrementalBuild>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>Effector.Plugin.StoneCut.xml</DocumentationFile>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42314</NoWarn>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ItemGroup>
<Reference Include="Effector.Plugin.Interface">
<HintPath>..\..\Effector.Main\Effector.Plugin.Interface\bin\Debug\Effector.Plugin.Interface.dll</HintPath>
</Reference>
<Reference Include="Effector.Plugin.Lib">
<HintPath>..\..\Effector.Plugin.Lib\Effector.Plugin.Lib\bin\Debug\Effector.Plugin.Lib.dll</HintPath>
</Reference>
<Reference Include="EgwWPFBaseLib">
<HintPath>..\..\..\EgwWPFBaseLib\EgwWPFBaseLib\bin\Debug\EgwWPFBaseLib.dll</HintPath>
</Reference>
<Reference Include="KeraLua, Version=1.4.1.0, Culture=neutral, PublicKeyToken=6a194c04b9c89217, processorArchitecture=MSIL">
<HintPath>..\packages\KeraLua.1.4.1\lib\net46\KeraLua.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="System.Xaml">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
<Reference Include="WindowsBase" />
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup>
<Import Include="System.Threading.Tasks" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Diagnostics" />
<Import Include="System.Windows" />
<Import Include="System.Windows.Controls" />
<Import Include="System.Windows.Data" />
<Import Include="System.Windows.Documents" />
<Import Include="System.Windows.Input" />
<Import Include="System.Windows.Shapes" />
<Import Include="System.Windows.Media" />
<Import Include="System.Windows.Media.Imaging" />
<Import Include="System.Windows.Navigation" />
</ItemGroup>
<ItemGroup>
<Compile Include="Constants\ConstGen.vb" />
<Compile Include="Constants\ConstIni.vb" />
<Compile Include="DoorListPage\DoorListPageV.xaml.vb">
<DependentUpon>DoorListPageV.xaml</DependentUpon>
</Compile>
<Compile Include="DoorListPage\DoorListPageVM.vb" />
<Compile Include="FiveLakesUI.xaml.vb">
<DependentUpon>FiveLakesUI.xaml</DependentUpon>
</Compile>
<Compile Include="FiveLakesUIVM.vb" />
<Compile Include="LUA\LuaManager.vb" />
<Compile Include="LUA\Lua_Aux.vb" />
<Compile Include="LUA\Lua_General.vb" />
<Compile Include="MachinePage\MachinePageV.xaml.vb">
<DependentUpon>MachinePageV.xaml</DependentUpon>
</Compile>
<Compile Include="MachinePage\MachinePageVM.vb" />
<Compile Include="MainMenu\MainMenuV.xaml.vb">
<DependentUpon>MainMenuV.xaml</DependentUpon>
</Compile>
<Compile Include="MainMenu\MainMenuVM.vb" />
<Compile Include="RestartWnd\RestartWndV.xaml.vb">
<DependentUpon>RestartWndV.xaml</DependentUpon>
</Compile>
<Compile Include="RestartWnd\RestartWndVM.vb" />
<Compile Include="StatisticsPage\StatisticsPageV.xaml.vb">
<DependentUpon>StatisticsPageV.xaml</DependentUpon>
</Compile>
<Compile Include="StatisticsPage\StatisticsPageVM.vb" />
<Compile Include="Utility\Dictionary.xaml.vb">
<DependentUpon>Dictionary.xaml</DependentUpon>
</Compile>
<Compile Include="My Project\AssemblyInfo.vb">
<SubType>Code</SubType>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="Utility\JsonUtility.vb" />
<Compile Include="Utility\Map.vb" />
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
</EmbeddedResource>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
<None Include="packages.config" />
<Resource Include="Resources\Fonts\Roboto-Light.ttf" />
<Resource Include="Resources\Fonts\Roboto-Regular.ttf" />
</ItemGroup>
<ItemGroup>
<Page Include="DoorListPage\DoorListPageV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="FiveLakesUI.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="MachinePage\MachinePageV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="MainMenu\MainMenuV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="RestartWnd\RestartWndV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="StatisticsPage\StatisticsPageV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Utility\Dictionary.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\DoorListPage\Add.png" />
<Resource Include="Resources\DoorListPage\Copy.png" />
<Resource Include="Resources\DoorListPage\Delete.png" />
<Resource Include="Resources\DoorListPage\DeleteCsv.png" />
<Resource Include="Resources\DoorListPage\MoveDown.png" />
<Resource Include="Resources\DoorListPage\MoveUp.png" />
<Resource Include="Resources\DoorListPage\MultipleCopy.png" />
<Resource Include="Resources\DoorListPage\NotProduce.png" />
<Resource Include="Resources\DoorListPage\OpenCsv.png" />
<Resource Include="Resources\DoorListPage\OpenProduction.png" />
<Resource Include="Resources\DoorListPage\Produce.png" />
<Resource Include="Resources\DoorListPage\ProduceAll.old.png" />
<Resource Include="Resources\DoorListPage\ProduceAll.png" />
<Resource Include="Resources\DoorListPage\ResetProduction.png" />
<Resource Include="Resources\DoorListPage\SaveCsv.png" />
<Resource Include="Resources\DoorListPage\SkipDoor.png" />
<Resource Include="Resources\DoorListPage\Verify.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\DoorListPage\DeleteAll.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<PropertyGroup>
<PreBuildEvent>powershell.exe -ExecutionPolicy Unrestricted -NoProfile -NonInteractive -File $(ProjectDir)\pre-build.ps1 -ProjectDir $(ProjectDir) -ProjectPath $(ProjectPath)</PreBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PostBuildEvent>copy $(TargetPath) c:\EgtData\Effector\Plugin\Effector.Plugin.StoneCut\Effector.Plugin.StoneCut.dll
</PostBuildEvent>
</PropertyGroup>
<Import Project="..\packages\KeraLua.1.4.1\build\net46\KeraLua.targets" Condition="Exists('..\packages\KeraLua.1.4.1\build\net46\KeraLua.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\KeraLua.1.4.1\build\net46\KeraLua.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\KeraLua.1.4.1\build\net46\KeraLua.targets'))" />
</Target>
</Project>
@@ -0,0 +1,7 @@
<Grid x:Class="FiveLakesUI"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Effector.Plugin.StoneCut"
DataContext="{StaticResource FiveLakesUIVM}">
<local:DoorListPageV DataContext="{StaticResource DoorListVM}"/>
</Grid>
@@ -0,0 +1,31 @@
Imports System.ComponentModel.Composition
Imports Effector.Plugin.Interface
<Export(GetType(IPluginControl))>
<ExportMetadata("Name", "Project")>
Public Class FiveLakesUI
Implements IPluginControl
Private m_FiveLakesUIVM As FiveLakesUIVM
<ImportingConstructor>
Sub New(Host As IHost)
' This call is required by the designer.
InitializeComponent()
'' Add any initialization after the InitializeComponent() call.
m_FiveLakesUIVM = Me.DataContext
'Me.DataContext = m_FiveLakesUIVM
AddHandler Me.Loaded, AddressOf FiveLakesUIV_Loaded
Map.SetRefSupervisorFunction(Host)
End Sub
'Private Sub Button1_Click(sender As Object, e As RoutedEventArgs) Handles Button1.Click
' 'TextBlockTest.Text = Host.PluginTestInfo
'End Sub
Private Sub FiveLakesUIV_Loaded(sender As Object, e As RoutedEventArgs)
m_FiveLakesUIVM.SetTextTest("Prova 1!!")
End Sub
End Class
+61
View File
@@ -0,0 +1,61 @@
Imports System.ComponentModel.Composition
Imports Effector.Plugin.Interface
Imports Effector.Plugin.Lib
Public Class FiveLakesUIVM
Inherits VMBase
Public Enum Pages As Integer
DOOR_LIST = 0
MACHINE_STATUS = 1
STATISTICS = 2
End Enum
Private m_sDataRoot As String
Private m_sConfigDir As String
Private m_sIniFile As String
Private m_sResourcesRoot As String
Private m_SelPage As Pages
Public Property SelPage As Integer
Get
Return m_SelPage
End Get
Set(value As Integer)
m_SelPage = value
End Set
End Property
Friend Sub SetSelPage(nPage As Pages)
m_SelPage = nPage
NotifyPropertyChanged(NameOf(SelPage))
End Sub
Private m_TextTest As String
Public ReadOnly Property TextTest As String
Get
Return m_TextTest
End Get
End Property
Friend Sub SetTextTest(sValue As String)
m_TextTest = sValue
NotifyPropertyChanged(NameOf(TextTest))
End Sub
Sub New()
' Creo riferimento a questa classe in Map
Map.BeginInit(Me)
' Impostazione path radice per i dati
m_sDataRoot = System.AppDomain.CurrentDomain.BaseDirectory
If GetPrivateProfileString(S_DATA, K_DATAROOT, "", m_sDataRoot, m_sDataRoot & "\" & DAT_FILE_NAME) = 0 Then
m_sDataRoot = System.AppDomain.CurrentDomain.BaseDirectory
End If
m_sDataRoot &= "\" & "Plugin\Effector.Plugin.StoneCut"
' Impostazione direttorio di configurazione
m_sConfigDir = m_sDataRoot & "\" & CONF_DIR
' Impostazione path Ini file
PluginIniFile.SetIniFile(m_sConfigDir & "\" & INI_FILE_NAME)
' Impostazione path resources dir
m_sResourcesRoot = m_sDataRoot & "\" & RES_DIR
End Sub
End Class
@@ -0,0 +1,17 @@
Imports System.ComponentModel.Composition
Imports Effector.Plugin.Interface
Imports KeraLua
<Export(GetType(IPluginLuaManager))>
<ExportMetadata("Name", "LuaManager")>
Public Class LuaManager
Implements IPluginLuaManager
Private state As Lua
Public Function PlgInit(state As Object) As Boolean Implements IPluginLuaManager.PlgInit
SetState(state)
Return LuaInstallGeneral(state)
End Function
End Class
+686
View File
@@ -0,0 +1,686 @@
Imports KeraLua
Public Module Lua_Aux
Private m_State As Lua
Friend Sub SetState(state As Lua)
m_State = state
End Sub
Friend Function LuaClearStack(state As Lua)
Dim nIndex As Integer = state.GetTop()
If nIndex > 0 Then
state.Pop(nIndex)
End If
Return True
End Function
Friend Function LuaCheckParam(state As Lua, nIndex As Integer, ByRef bValue As Boolean)
If Not LuaGetParam(state, nIndex, bValue) Then
Return state.Error(" Invalid Parameter # " & nIndex)
End If
Return True
End Function
Friend Function LuaCheckParam(state As Lua, nIndex As Integer, ByRef nValue As Integer)
If Not LuaGetParam(state, nIndex, nValue) Then
Return state.Error(" Invalid Parameter # " & nIndex)
End If
Return True
End Function
Friend Function LuaCheckParam(state As Lua, nIndex As Integer, ByRef lValue As Long)
If Not LuaGetParam(state, nIndex, lValue) Then
Return state.Error(" Invalid Parameter # " & nIndex)
End If
Return True
End Function
Friend Function LuaCheckParam(state As Lua, nIndex As Integer, ByRef dValue As Double)
If Not LuaGetParam(state, nIndex, dValue) Then
Return state.Error(" Invalid Parameter # " & nIndex)
End If
Return True
End Function
Friend Function LuaCheckParam(state As Lua, nIndex As Integer, ByRef sValue As String)
If Not LuaGetParam(state, nIndex, sValue) Then
Return state.Error(" Invalid Parameter # " & nIndex)
End If
Return True
End Function
Friend Function LuaGetParam(state As Lua, nIndex As Integer, ByRef bValue As Boolean) As Boolean
If Not state.IsBoolean(nIndex) Then Return False
bValue = state.ToBoolean(nIndex)
Return True
End Function
Friend Function LuaGetParam(state As Lua, nIndex As Integer, ByRef nValue As Integer) As Boolean
If Not state.IsNumber(nIndex) Then Return False
nValue = Math.Round(state.ToNumber(nIndex))
Return True
End Function
Friend Function LuaGetParam(state As Lua, nIndex As Integer, ByRef lValue As Long) As Boolean
If Not state.IsNumber(nIndex) Then Return False
lValue = state.ToInteger(nIndex)
Return True
End Function
Friend Function LuaGetParam(state As Lua, nIndex As Integer, ByRef dValue As Double) As Boolean
If Not state.IsNumber(nIndex) Then Return False
dValue = state.ToNumber(nIndex)
Return True
End Function
Friend Function LuaGetParam(state As Lua, nIndex As Integer, ByRef sValue As String) As Boolean
If Not state.IsString(nIndex) Then Return False
sValue = state.ToString(nIndex)
Return True
End Function
Friend Function LuaSetParam(state As Lua) As Boolean
Try
state.PushNil()
Catch ex As Exception
Return False
End Try
Return True
End Function
Friend Function LuaSetParam(state As Lua, ByRef bValue As Boolean) As Boolean
Try
state.PushBoolean(bValue)
Catch ex As Exception
Return False
End Try
Return True
End Function
Friend Function LuaSetParam(state As Lua, ByRef nValue As Integer) As Boolean
Try
state.PushInteger(nValue)
Catch ex As Exception
Return False
End Try
Return True
End Function
Friend Function LuaSetParam(state As Lua, ByRef lValue As Long) As Boolean
Try
state.PushInteger(lValue)
Catch ex As Exception
Return False
End Try
Return True
End Function
Friend Function LuaSetParam(state As Lua, ByRef dValue As Double) As Boolean
Try
state.PushNumber(dValue)
Catch ex As Exception
Return False
End Try
Return True
End Function
Friend Function LuaSetParam(state As Lua, ByRef sValue As String) As Boolean
Try
state.PushString(sValue)
Catch ex As Exception
Return False
End Try
Return True
End Function
Friend Function LuaGetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef bValue As Boolean) As Boolean
If Not state.IsTable(nIndex) Then Return False
state.GetField(nIndex, sVarName)
Dim bResult As Boolean = LuaGetParam(state, -1, bValue)
state.Pop(1)
Return bResult
End Function
Friend Function LuaGetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef nValue As Integer) As Boolean
If Not state.IsTable(nIndex) Then Return False
state.GetField(nIndex, sVarName)
Dim bResult As Boolean = LuaGetParam(state, -1, nValue)
state.Pop(1)
Return bResult
End Function
Friend Function LuaGetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef lValue As Long) As Boolean
If Not state.IsTable(nIndex) Then Return False
state.GetField(nIndex, sVarName)
Dim bResult As Boolean = LuaGetParam(state, -1, lValue)
state.Pop(1)
Return bResult
End Function
Friend Function LuaGetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef dValue As Double) As Boolean
If Not state.IsTable(nIndex) Then Return False
state.GetField(nIndex, sVarName)
Dim bResult As Boolean = LuaGetParam(state, -1, dValue)
state.Pop(1)
Return bResult
End Function
Friend Function LuaGetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef sValue As String) As Boolean
If Not state.IsTable(nIndex) Then Return False
state.GetField(nIndex, sVarName)
Dim bResult As Boolean = LuaGetParam(state, -1, sValue)
state.Pop(1)
Return bResult
End Function
Friend Function LuaGetGlobVar(state As Lua, ByRef sName As String, ByRef bValue As Boolean) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
state.GetGlobal(sName)
Dim bResult As Boolean = LuaGetParam(state, -1, bValue)
state.Pop(1)
Return bResult
Else
Dim sTableName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
state.GetGlobal(sTableName)
For nParamIndex As Integer = 1 To sParams.Count - 2
Dim nTableIndex As Integer = -1
If Integer.TryParse(sParams(nParamIndex), nTableIndex) Then
state.RawGetInteger(-1, nTableIndex)
Else
state.GetField(-1, sParams(nParamIndex))
End If
Next
Dim sVarName As String = sParams(sParams.Count - 1)
Dim bResult As Boolean = LuaGetTabFieldParam(state, -1, sVarName, bValue)
state.Pop(sParams.Count - 1)
Return bResult
End If
End Function
Friend Function LuaGetGlobVar(ByRef sName As String, ByRef bValue As Boolean) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
m_State.GetGlobal(sName)
Dim bResult As Boolean = LuaGetParam(m_State, -1, bValue)
m_State.Pop(1)
Return bResult
Else
Dim sTableName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
m_State.GetGlobal(sTableName)
For nParamIndex As Integer = 1 To sParams.Count - 2
Dim nTableIndex As Integer = -1
If Integer.TryParse(sParams(nParamIndex), nTableIndex) Then
m_State.RawGetInteger(-1, nTableIndex)
Else
m_State.GetField(-1, sParams(nParamIndex))
End If
Next
Dim sVarName As String = sParams(sParams.Count - 1)
Dim bResult As Boolean = LuaGetTabFieldParam(m_State, -1, sVarName, bValue)
m_State.Pop(sParams.Count - 1)
Return bResult
End If
End Function
Friend Function LuaGetGlobVar(state As Lua, ByRef sName As String, ByRef nValue As Integer) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
state.GetGlobal(sName)
Dim bResult As Boolean = LuaGetParam(state, -1, nValue)
state.Pop(1)
Return bResult
Else
Dim sTableName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
state.GetGlobal(sTableName)
For nParamIndex As Integer = 1 To sParams.Count - 2
Dim nTableIndex As Integer = -1
If Integer.TryParse(sParams(nParamIndex), nTableIndex) Then
state.RawGetInteger(-1, nTableIndex)
Else
state.GetField(-1, sParams(nParamIndex))
End If
Next
Dim sVarName As String = sParams(sParams.Count - 1)
Dim bResult As Boolean = LuaGetTabFieldParam(state, -1, sVarName, nValue)
state.Pop(sParams.Count - 1)
Return bResult
End If
End Function
Friend Function LuaGetGlobVar(ByRef sName As String, ByRef nValue As Integer) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
m_State.GetGlobal(sName)
Dim bResult As Boolean = LuaGetParam(m_State, -1, nValue)
m_State.Pop(1)
Return bResult
Else
Dim sTableName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
m_State.GetGlobal(sTableName)
For nParamIndex As Integer = 1 To sParams.Count - 2
Dim nTableIndex As Integer = -1
If Integer.TryParse(sParams(nParamIndex), nTableIndex) Then
m_State.RawGetInteger(-1, nTableIndex)
Else
m_State.GetField(-1, sParams(nParamIndex))
End If
Next
Dim sVarName As String = sParams(sParams.Count - 1)
Dim bResult As Boolean = LuaGetTabFieldParam(m_State, -1, sVarName, nValue)
m_State.Pop(sParams.Count - 1)
Return bResult
End If
End Function
Friend Function LuaGetGlobVar(state As Lua, ByRef sName As String, ByRef lValue As Long) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
state.GetGlobal(sName)
Dim bResult As Boolean = LuaGetParam(state, -1, lValue)
state.Pop(1)
Return bResult
Else
Dim sTableName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
state.GetGlobal(sTableName)
For nParamIndex As Integer = 1 To sParams.Count - 2
Dim nTableIndex As Integer = -1
If Integer.TryParse(sParams(nParamIndex), nTableIndex) Then
state.RawGetInteger(-1, nTableIndex)
Else
state.GetField(-1, sParams(nParamIndex))
End If
Next
Dim sVarName As String = sParams(sParams.Count - 1)
Dim bResult As Boolean = LuaGetTabFieldParam(state, -1, sVarName, lValue)
state.Pop(sParams.Count - 1)
Return bResult
End If
End Function
Friend Function LuaGetGlobVar(ByRef sName As String, ByRef lValue As Long) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
m_State.GetGlobal(sName)
Dim bResult As Boolean = LuaGetParam(m_State, -1, lValue)
m_State.Pop(1)
Return bResult
Else
Dim sTableName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
m_State.GetGlobal(sTableName)
For nParamIndex As Integer = 1 To sParams.Count - 2
Dim nTableIndex As Integer = -1
If Integer.TryParse(sParams(nParamIndex), nTableIndex) Then
m_State.RawGetInteger(-1, nTableIndex)
Else
m_State.GetField(-1, sParams(nParamIndex))
End If
Next
Dim sVarName As String = sParams(sParams.Count - 1)
Dim bResult As Boolean = LuaGetTabFieldParam(m_State, -1, sVarName, lValue)
m_State.Pop(sParams.Count - 1)
Return bResult
End If
End Function
Friend Function LuaGetGlobVar(state As Lua, ByRef sName As String, ByRef dValue As Double) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
state.GetGlobal(sName)
Dim bResult As Boolean = LuaGetParam(state, -1, dValue)
state.Pop(1)
Return bResult
Else
Dim sTableName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
state.GetGlobal(sTableName)
For nParamIndex As Integer = 1 To sParams.Count - 2
Dim nTableIndex As Integer = -1
If Integer.TryParse(sParams(nParamIndex), nTableIndex) Then
state.RawGetInteger(-1, nTableIndex)
Else
state.GetField(-1, sParams(nParamIndex))
End If
Next
Dim sVarName As String = sParams(sParams.Count - 1)
Dim bResult As Boolean = LuaGetTabFieldParam(state, -1, sVarName, dValue)
state.Pop(sParams.Count - 1)
Return bResult
End If
End Function
Friend Function LuaGetGlobVar(ByRef sName As String, ByRef dValue As Double) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
m_State.GetGlobal(sName)
Dim bResult As Boolean = LuaGetParam(m_State, -1, dValue)
m_State.Pop(1)
Return bResult
Else
Dim sTableName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
m_State.GetGlobal(sTableName)
For nParamIndex As Integer = 1 To sParams.Count - 2
Dim nTableIndex As Integer = -1
If Integer.TryParse(sParams(nParamIndex), nTableIndex) Then
m_State.RawGetInteger(-1, nTableIndex)
Else
m_State.GetField(-1, sParams(nParamIndex))
End If
Next
Dim sVarName As String = sParams(sParams.Count - 1)
Dim bResult As Boolean = LuaGetTabFieldParam(m_State, -1, sVarName, dValue)
m_State.Pop(sParams.Count - 1)
Return bResult
End If
End Function
Friend Function LuaGetGlobVar(state As Lua, ByRef sName As String, ByRef sValue As String) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
state.GetGlobal(sName)
Dim bResult As Boolean = LuaGetParam(state, -1, sValue)
state.Pop(1)
Return bResult
Else
Dim sTableName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
state.GetGlobal(sTableName)
For nParamIndex As Integer = 1 To sParams.Count - 2
Dim nTableIndex As Integer = -1
If Integer.TryParse(sParams(nParamIndex), nTableIndex) Then
state.RawGetInteger(-1, nTableIndex)
Else
state.GetField(-1, sParams(nParamIndex))
End If
Next
Dim sVarName As String = sParams(sParams.Count - 1)
Dim bResult As Boolean = LuaGetTabFieldParam(state, -1, sVarName, sValue)
state.Pop(sParams.Count - 1)
Return bResult
End If
End Function
Friend Function LuaGetGlobVar(ByRef sName As String, ByRef sValue As String) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
m_State.GetGlobal(sName)
Dim bResult As Boolean = LuaGetParam(m_State, -1, sValue)
m_State.Pop(1)
Return bResult
Else
Dim sTableName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
m_State.GetGlobal(sTableName)
For nParamIndex As Integer = 1 To sParams.Count - 2
Dim nTableIndex As Integer = -1
If Integer.TryParse(sParams(nParamIndex), nTableIndex) Then
m_State.RawGetInteger(-1, nTableIndex)
Else
m_State.GetField(-1, sParams(nParamIndex))
End If
Next
Dim sVarName As String = sParams(sParams.Count - 1)
Dim bResult As Boolean = LuaGetTabFieldParam(m_State, -1, sVarName, sValue)
m_State.Pop(sParams.Count - 1)
Return bResult
End If
End Function
Friend Function LuaSetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String) As Boolean
If Not state.IsTable(nIndex) Then Return False
If Not LuaSetParam(state) Then Return False
Dim nPos As Integer = (If(nIndex > 0, nIndex, nIndex - 1))
state.SetField(nPos, sVarName)
Return True
End Function
Friend Function LuaSetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef bValue As Boolean) As Boolean
If Not state.IsTable(nIndex) Then Return False
If Not LuaSetParam(state, bValue) Then Return False
Dim nPos As Integer = (If(nIndex > 0, nIndex, nIndex - 1))
state.SetField(nPos, sVarName)
Return True
End Function
Friend Function LuaSetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef nValue As Integer) As Boolean
If Not state.IsTable(nIndex) Then Return False
If Not LuaSetParam(state, nValue) Then Return False
Dim nPos As Integer = (If(nIndex > 0, nIndex, nIndex - 1))
state.SetField(nPos, sVarName)
Return True
End Function
Friend Function LuaSetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef dValue As Double) As Boolean
If Not state.IsTable(nIndex) Then Return False
If Not LuaSetParam(state, dValue) Then Return False
Dim nPos As Integer = (If(nIndex > 0, nIndex, nIndex - 1))
state.SetField(nPos, sVarName)
Return True
End Function
Friend Function LuaSetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef sValue As String) As Boolean
If Not state.IsTable(nIndex) Then Return False
If Not LuaSetParam(state, sValue) Then Return False
Dim nPos As Integer = (If(nIndex > 0, nIndex, nIndex - 1))
state.SetField(nPos, sVarName)
Return True
End Function
Friend Function LuaSetGlobVar(state As Lua, ByRef sName As String, ByRef bValue As Boolean) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
If Not LuaSetParam(state, bValue) Then Return False
state.SetGlobal(sName)
Return True
' altrimenti campo di tabella
Else
Dim sTableName As String = "", sVarName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
sVarName = sParams(1)
state.GetGlobal(sTableName)
Dim bResult As Boolean = LuaSetTabFieldParam(state, -1, sVarName, bValue)
state.Pop(1)
Return bResult
End If
End Function
Friend Function LuaSetGlobVar(ByRef sName As String, ByRef bValue As Boolean) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
If Not LuaSetParam(m_State, bValue) Then Return False
m_State.SetGlobal(sName)
Return True
' altrimenti campo di tabella
Else
Dim sTableName As String = "", sVarName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
sVarName = sParams(1)
m_State.GetGlobal(sTableName)
Dim bResult As Boolean = LuaSetTabFieldParam(m_State, -1, sVarName, bValue)
m_State.Pop(1)
Return bResult
End If
End Function
Friend Function LuaSetGlobVar(state As Lua, ByRef sName As String, ByRef nValue As Integer) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
If Not LuaSetParam(state, nValue) Then Return False
state.SetGlobal(sName)
Return True
' altrimenti campo di tabella
Else
Dim sTableName As String = "", sVarName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
sVarName = sParams(1)
state.GetGlobal(sTableName)
Dim bResult As Boolean = LuaSetTabFieldParam(state, -1, sVarName, nValue)
state.Pop(1)
Return bResult
End If
End Function
Friend Function LuaSetGlobVar(ByRef sName As String, ByRef nValue As Integer) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
If Not LuaSetParam(m_State, nValue) Then Return False
m_State.SetGlobal(sName)
Return True
' altrimenti campo di tabella
Else
Dim sTableName As String = "", sVarName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
sVarName = sParams(1)
m_State.GetGlobal(sTableName)
Dim bResult As Boolean = LuaSetTabFieldParam(m_State, -1, sVarName, nValue)
m_State.Pop(1)
Return bResult
End If
End Function
Friend Function LuaSetGlobVar(state As Lua, ByRef sName As String, ByRef dValue As Double) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
If Not LuaSetParam(state, dValue) Then Return False
state.SetGlobal(sName)
Return True
' altrimenti campo di tabella
Else
Dim sTableName As String = "", sVarName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
sVarName = sParams(1)
state.GetGlobal(sTableName)
Dim bResult As Boolean = LuaSetTabFieldParam(state, -1, sVarName, dValue)
state.Pop(1)
Return bResult
End If
End Function
Friend Function LuaSetGlobVar(ByRef sName As String, ByRef dValue As Double) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
If Not LuaSetParam(m_State, dValue) Then Return False
m_State.SetGlobal(sName)
Return True
' altrimenti campo di tabella
Else
Dim sTableName As String = "", sVarName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
sVarName = sParams(1)
m_State.GetGlobal(sTableName)
Dim bResult As Boolean = LuaSetTabFieldParam(m_State, -1, sVarName, dValue)
m_State.Pop(1)
Return bResult
End If
End Function
Friend Function LuaSetGlobVar(state As Lua, ByRef sName As String, ByRef sValue As String) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
If Not LuaSetParam(state, sValue) Then Return False
state.SetGlobal(sName)
Return True
' altrimenti campo di tabella
Else
Dim sTableName As String = "", sVarName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
sVarName = sParams(1)
state.GetGlobal(sTableName)
Dim bResult As Boolean = LuaSetTabFieldParam(state, -1, sVarName, sValue)
state.Pop(1)
Return bResult
End If
End Function
Friend Function LuaSetGlobVar(ByRef sName As String, ByRef sValue As String) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
If Not LuaSetParam(m_State, sValue) Then Return False
m_State.SetGlobal(sName)
Return True
' altrimenti campo di tabella
Else
Dim sTableName As String = "", sVarName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
sVarName = sParams(1)
m_State.GetGlobal(sTableName)
Dim bResult As Boolean = LuaSetTabFieldParam(m_State, -1, sVarName, sValue)
m_State.Pop(1)
Return bResult
End If
End Function
Friend Function LuaResetGlobVar(state As Lua, ByRef sName As String) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
If Not LuaSetParam(state) Then Return False
state.SetGlobal(sName)
Return True
' altrimenti campo di tabella
Else
Dim sTableName As String = "", sVarName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
sVarName = sParams(1)
state.GetGlobal(sTableName)
Dim bResult As Boolean = LuaSetTabFieldParam(state, -1, sVarName)
state.Pop(1)
Return bResult
End If
End Function
Friend Function LuaResetGlobVar(ByRef sName As String) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
If Not LuaSetParam(m_State) Then Return False
m_State.SetGlobal(sName)
Return True
' altrimenti campo di tabella
Else
Dim sTableName As String = "", sVarName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
sVarName = sParams(1)
m_State.GetGlobal(sTableName)
Dim bResult As Boolean = LuaSetTabFieldParam(m_State, -1, sVarName)
m_State.Pop(1)
Return bResult
End If
End Function
Friend Function LuaCreateGlobTable(state As Lua, ByRef sName As String) As Boolean
Try
state.NewTable()
state.SetGlobal(sName)
Catch ex As Exception
Return False
End Try
Return True
End Function
Friend Function LuaCreateGlobTable(ByRef sName As String) As Boolean
Try
m_State.NewTable()
m_State.SetGlobal(sName)
Catch ex As Exception
Return False
End Try
Return True
End Function
End Module
+214
View File
@@ -0,0 +1,214 @@
Imports System.IO
Imports KeraLua
Imports Effector.Plugin.Lib
Public Module Lua_General
Friend func_PlgGetNumberFromIni As LuaFunction = AddressOf Lua_PlgGetNumberFromIni
Friend func_PlgGetStringFromIni As LuaFunction = AddressOf Lua_PlgGetStringFromIni
Friend func_PlgWriteStringToIni As LuaFunction = AddressOf Lua_PlgWriteStringToIni
'Friend func_PlgExecProcess As LuaFunction = AddressOf Lua_PlgExecProcess
'Friend func_PlgExecProcessAsync As LuaFunction = AddressOf Lua_PlgExecProcessAsync
'Friend func_PlgCheckExecProcessAsync As LuaFunction = AddressOf Lua_PlgCheckExecProcessAsync
Friend func_PlgSetChangeState As LuaFunction = AddressOf Lua_PlgSetChangeState
Friend func_PlgGetNextDoor As LuaFunction = AddressOf Lua_PlgGetNextDoor
'Friend func_PlgOpenRestartWnd As LuaFunction = AddressOf Lua_PlgOpenRestartWnd
Friend func_PlgMessageWnd As LuaFunction = AddressOf Lua_PlgMessageWnd
Friend func_PlgListReset As LuaFunction = AddressOf Lua_PlgListReset
Friend func_PlgMachineReset As LuaFunction = AddressOf Lua_PlgMachineReset
Private Function Lua_PlgGetNumberFromIni(ByVal p As IntPtr) As Integer
Dim state = Lua.FromIntPtr(p)
' 4 parametri: sSec, sKey, dDef
Dim sSec As String = ""
Dim sKey As String = ""
Dim dDef As Integer = 0
LuaCheckParam(state, 1, sSec)
LuaCheckParam(state, 2, sKey)
LuaCheckParam(state, 3, dDef)
LuaClearStack(state)
Dim dResult As Double = GetPluginPrivateProfileDouble(sSec, sKey, dDef)
' restituisco il risultato
LuaSetParam(state, dResult)
Return 1
End Function
Private Function Lua_PlgGetStringFromIni(ByVal p As IntPtr) As Integer
Dim state = Lua.FromIntPtr(p)
' 4 parametri: sSec, sKey, sDef
Dim sSec As String = ""
Dim sKey As String = ""
Dim sDef As String = 0
LuaCheckParam(state, 1, sSec)
LuaCheckParam(state, 2, sKey)
LuaCheckParam(state, 3, sDef)
LuaClearStack(state)
Dim sResult As String = ""
GetPluginPrivateProfileString(sSec, sKey, sDef, sResult)
' restituisco il risultato
LuaSetParam(state, sResult)
Return 1
End Function
Private Function Lua_PlgWriteStringToIni(ByVal p As IntPtr) As Integer
Dim state = Lua.FromIntPtr(p)
' 4 parametri: sSec, sKey, sVal
Dim sSec As String = ""
Dim sKey As String = ""
Dim sVal As Integer = 0
LuaCheckParam(state, 1, sSec)
LuaCheckParam(state, 2, sKey)
LuaCheckParam(state, 3, sVal)
LuaClearStack(state)
Dim bResult As Boolean = WritePluginPrivateProfileString(sSec, sKey, sVal)
' restituisco il risultato
LuaSetParam(state, bResult)
Return 1
End Function
'Private Function Lua_PlgExecProcess(ByVal p As IntPtr) As Integer
' Dim state = Lua.FromIntPtr(p)
' Dim sDDFName As String = ""
' LuaCheckParam(state, 1, sDDFName)
' LuaClearStack(state)
' If Map.refDoorListPageVM.ExecCAMProcess(sDDFName) Then
' state.PushBoolean(True)
' Return 1
' Else
' Return 0
' End If
'End Function
'Private Function Lua_PlgExecProcessAsync(ByVal p As IntPtr) As Integer
' Dim state = Lua.FromIntPtr(p)
' Dim sDDFName As String = ""
' LuaCheckParam(state, 1, sDDFName)
' LuaClearStack(state)
' If Map.refDoorListPageVM.ExecCAMProcessAsync(sDDFName) Then
' state.PushBoolean(True)
' Return 1
' Else
' Return 0
' End If
'End Function
'Private Function Lua_PlgCheckExecProcessAsync(ByVal p As IntPtr) As Integer
' Dim state = Lua.FromIntPtr(p)
' LuaClearStack(state)
' Dim bHasExited As Boolean = False
' Dim nExitCode As Integer = -1
' If Map.refSupervisorFunction.PlgCheckExecProcessAsync(bHasExited, nExitCode) Then
' state.PushBoolean(bHasExited)
' state.PushInteger(nExitCode)
' Return 2
' Else
' Return 0
' End If
'End Function
Private Function Lua_PlgGetNextDoor(ByVal p As IntPtr) As Integer
Dim state = Lua.FromIntPtr(p)
LuaClearStack(state)
Dim NextDoor As Door = Map.refDoorListPageVM.GetNextDoor()
If Not IsNothing(NextDoor) Then
Dim sPartProgramDirPath As String = ""
GetPluginPrivateProfileString(S_GENERAL, "PartProgramDir", "", sPartProgramDirPath)
' restituisco il risultato
LuaSetParam(state, NextDoor.nId)
LuaSetParam(state, sPartProgramDirPath & "\" & NextDoor.sFileName)
Return 2
End If
Return 0
End Function
'Private Function Lua_PlgOpenRestartWnd(ByVal p As IntPtr) As Integer
' Dim state = Lua.FromIntPtr(p)
' LuaClearStack(state)
' Dim RestartWnd As New RestartWndV(Application.Current.MainWindow, New RestartWndVM())
' RestartWnd.ShowDialog()
' Return 0
'End Function
Private Function Lua_PlgMessageWnd(ByVal p As IntPtr) As Integer
Dim state = Lua.FromIntPtr(p)
Dim sMsg As String = ""
LuaCheckParam(state, 1, sMsg)
LuaClearStack(state)
MessageBox.Show(sMsg, "", MessageBoxButton.OK)
Return 0
End Function
Private Function Lua_PlgMachineReset(ByVal p As IntPtr) As Integer
Dim state = Lua.FromIntPtr(p)
Dim nMachineIndex As Integer = 1
LuaGetParam(state, 1, nMachineIndex)
LuaClearStack(state)
Map.refDoorListPageVM.ResetProductionQueue()
'Map.refDoorListPageVM.ResetStateAfterReset()
Map.refDoorListPageVM.WriteBackup()
Return 0
End Function
Private Function Lua_PlgListReset(ByVal p As IntPtr) As Integer
Dim state = Lua.FromIntPtr(p)
LuaClearStack(state)
If Map.refDoorListPageVM.bResetList Then
Map.refDoorListPageVM.ResetResetList()
state.PushBoolean(True)
Return 1
Else
Return 0
End If
End Function
Private Function Lua_PlgSetChangeState(ByVal p As IntPtr) As Integer
Dim state = Lua.FromIntPtr(p)
Dim nState As Integer = 0
LuaGetParam(state, 1, nState)
LuaClearStack(state)
If nState = 1 Then
Dim CurrDoor As Door = Map.refDoorListPageVM.DoorList.FirstOrDefault(Function(x) x.nState = Door.PartProgramStates.SENT_TO_NC)
If Not IsNothing(CurrDoor) Then
Dim Now As DateTime = DateTime.Now
' verifico se fine precedente impostata
Dim nIndex As Integer = Map.refDoorListPageVM.DoorList.IndexOf(CurrDoor)
If nIndex > 0 Then
Dim PrevDoor As Door = Map.refDoorListPageVM.DoorList(nIndex - 1)
If Not IsNothing(PrevDoor) AndAlso PrevDoor.nState = Door.PartProgramStates.MACHINE_START Then
PrevDoor.SetState(Door.PartProgramStates.PRODUCED)
PrevDoor.SetMachiningEnd(Now - TimeSpan.FromSeconds(1))
End If
End If
CurrDoor.SetState(Door.PartProgramStates.MACHINE_START)
CurrDoor.SetMachiningStart(Now)
End If
ElseIf nState = 2 Then
Dim CurrDoor As Door = Map.refDoorListPageVM.DoorList.FirstOrDefault(Function(x) x.nState = Door.PartProgramStates.MACHINE_START)
If Not IsNothing(CurrDoor) Then
CurrDoor.SetState(Door.PartProgramStates.PRODUCED)
CurrDoor.SetMachiningEnd(DateTime.Now())
End If
End If
Map.refDoorListPageVM.WriteBackup()
Return 0
End Function
Friend Function LuaInstallGeneral(state As Lua) As Boolean
If IsNothing(state) Then Return False
state.Register("PlgGetNumberFromIni", func_PlgGetNumberFromIni)
state.Register("PlgGetStringFromIni", func_PlgGetStringFromIni)
state.Register("PlgWriteStringToIni", func_PlgWriteStringToIni)
'state.Register("PlgExecProcess", func_PlgExecProcess)
'state.Register("PlgExecProcessAsync", func_PlgExecProcessAsync)
'state.Register("PlgCheckExecProcessAsync", func_PlgCheckExecProcessAsync)
state.Register("PlgGetNextDoor", func_PlgGetNextDoor)
'state.Register("PlgOpenRestartWnd", func_PlgOpenRestartWnd)
state.Register("PlgMessageWnd", func_PlgMessageWnd)
state.Register("PlgSetChangeState", func_PlgSetChangeState)
state.Register("PlgListReset", func_PlgListReset)
state.Register("PlgMachineReset", func_PlgMachineReset)
Return True
End Function
End Module
@@ -0,0 +1,656 @@
<Grid x:Class="MachinePageV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Effector.Plugin.StoneCut"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="950" d:DesignWidth="1600">
<Grid.Resources>
<local:StringToVisibilityConverter x:Key="StringToVisibilityConverter"/>
<local:StringToMachineStateConverter x:Key="StringToMachineStateConverter"/>
<local:StringToDDFCalcStateConverter x:Key="StringToDDFCalcStateConverter"/>
<local:StringToNewDoorStateConverter x:Key="StringToNewDoorStateConverter"/>
<local:StringToBooleanConverter x:Key="StringToBooleanConverter"/>
<local:StringToBackgroundConverter x:Key="StringToBackgroundConverter"/>
<local:DoorToVisibilityConverter x:Key="DoorToVisibilityConverter"/>
<local:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<!--Lista variabili-->
<ItemsControl ItemsSource="{Binding VariableList}"
Visibility="{Binding VariableList_Visibility}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"/>
<ColumnDefinition Width="50"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding sName}"/>
<TextBlock Text=" ("/>
<TextBlock Text="{Binding sIndex}"/>
<TextBlock Text=")"/>
</StackPanel>
<TextBlock Grid.Column="1"
Text="{Binding sValue}"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<Grid Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="20"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Grid.Column="0"
Grid.Row="0"
Text="DDF Calc State"/>
<TextBlock Grid.Column="2"
Grid.Row="0"
Text="{Binding nDDfCalcState, Converter={StaticResource StringToDDFCalcStateConverter}}"/>
<TextBlock Grid.Column="0"
Grid.Row="1"
Text="New Door State"/>
<TextBlock Grid.Column="2"
Grid.Row="1"
Text="{Binding nNewDoorState, Converter={StaticResource StringToNewDoorStateConverter}}"/>
<TextBlock Grid.ColumnSpan="2"
Grid.Row="2"
Text="Errore nella generazione programma!&#x0d;&#x0a;Verificare nel file di log!&#x0d;&#x0a;Chiudere il programma e riaprirlo dopo aver risolto!"
Visibility="{Binding bErrorReset, Converter={StaticResource BooleanToVisibilityConverter}}"/>
</Grid>
<Grid Grid.Row="1"
VerticalAlignment="Center">
<Grid.Resources>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!--Gestore macchina-->
<Grid Grid.Column="1"
Grid.Row="1"
Visibility="{Binding MachineCommands_Visibility}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="3.5*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<TextBlock Text="{Binding VariableList[5].sValue, Converter={StaticResource StringToMachineStateConverter}}"
Style="{StaticResource MachDrawVar_TextBlock}"/>
<Button Grid.Row="1"
Content="Initialize"
Command="{Binding WriteVariable_Command}"
CommandParameter="1,1,1352,1"
Style="{StaticResource Advancement_Button}"/>
<StackPanel Grid.Row="2"
Orientation="Horizontal"
HorizontalAlignment="Center">
<Button Content="Start&#x0d;&#x0a;Machining"
Command="{Binding ManageMachining_Command}"
CommandParameter="1,1"
Style="{StaticResource Advancement_Button}"/>
<Button Content="End&#x0d;&#x0a;Machining"
Command="{Binding ManageMachining_Command}"
CommandParameter="1,2"
Style="{StaticResource Advancement_Button}"/>
</StackPanel>
<Grid Grid.Row="3"
HorizontalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Grid.Column="0"
Grid.Row="0"
Text="Sent 1"/>
<CheckBox Grid.Column="1"
Grid.Row="0"
IsChecked="{Binding VariableList[3].sValue, Converter={StaticResource StringToBooleanConverter}}"
Style="{StaticResource MachDrawVar_CheckBox}"/>
<TextBlock Grid.Column="0"
Grid.Row="1"
Text="Sent 2"/>
<CheckBox Grid.Column="1"
Grid.Row="1"
IsChecked="{Binding VariableList[4].sValue, Converter={StaticResource StringToBooleanConverter}}"
Style="{StaticResource MachDrawVar_CheckBox}"/>
</Grid>
</Grid>
</Grid>
<!--Bottoni avanzamento-->
<!--<Grid Grid.Column="1"
Grid.Row="2"
Visibility="{Binding MachineCommands_Visibility}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3.8*"/>
<ColumnDefinition Width="18.7*"/>
<ColumnDefinition Width="3.8*"/>
</Grid.ColumnDefinitions>
<Button Content="Load Door&#x0d;&#x0a;On M1S0"
Command="{Binding WriteVariable_Command}"
CommandParameter="1,3,901.0,1;1,2,980,1"
Style="{StaticResource Advancement_Button}"/>
<Button Grid.Column="2"
Content="Unload Door&#x0d;&#x0a;From M2S4"
Command="{Binding WriteVariable_Command}"
CommandParameter="2,2,984,0;2,1,1364,0"
Style="{StaticResource Advancement_Button}"/>
</Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2.8*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1.7*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2.8*"/>
</Grid.ColumnDefinitions>
<Button Grid.Column="1"
Content="Go To&#x0d;&#x0a;M1S1"
Command="{Binding MoveVariable_Command}"
CommandParameter="1,1,1360/1,2,980;1,3,901.0->1,1,1361/1,2,981"
Style="{StaticResource Advancement_Button}"/>
<Button Grid.Column="2"
Content="Go To&#x0d;&#x0a;M1S2"
Command="{Binding MoveVariable_Command}"
CommandParameter="1,1,1361/1,2,981->1,1,1362/1,2,982"
Style="{StaticResource Advancement_Button}"/>
<Button Grid.Column="4"
Content="Go To&#x0d;&#x0a;M1S3"
Command="{Binding MoveVariable_Command}"
CommandParameter="1,1,1362/1,2,982->1,1,1363/1,2,983"
Style="{StaticResource Advancement_Button}"/>
<Button Grid.Column="5"
Content="Go To&#x0d;&#x0a;M1S4"
Command="{Binding MoveVariable_Command}"
CommandParameter="1,1,1363/1,2,983->1,1,1364;2,1,1360/1,2,984;2,2,980"
Style="{StaticResource Advancement_Button}"/>
<Button Grid.Column="7"
Content="Go To&#x0d;&#x0a;M2S1"
Command="{Binding MoveVariable_Command}"
CommandParameter="2,1,1360;1,1,1364/1,2,984;2,2,980->2,1,1361/2,2,981"
Style="{StaticResource Advancement_Button}"/>
<Button Grid.Column="8"
Content="Go To&#x0d;&#x0a;M2S2"
Command="{Binding MoveVariable_Command}"
CommandParameter="2,1,1361/2,2,981->2,1,1362/2,2,982"
Style="{StaticResource Advancement_Button}"/>
<Button Grid.Column="10"
Content="Go To&#x0d;&#x0a;M2S3"
Command="{Binding MoveVariable_Command}"
CommandParameter="2,1,1362/2,2,982->2,1,1363/2,2,983"
Style="{StaticResource Advancement_Button}"/>
<Button Grid.Column="11"
Content="Go To&#x0d;&#x0a;M2S4"
Command="{Binding MoveVariable_Command}"
CommandParameter="2,1,1363/2,2,983->2,1,1364/2,2,984"
Style="{StaticResource Advancement_Button}"/>
</Grid>
</Grid>-->
<!--Immagine macchina-->
<Grid Grid.Column="1"
Grid.Row="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.4*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="0.14*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="1"
Source="{Binding sMachineImagePath}"
Stretch="Uniform"/>
</Grid>
<!--Intestazioni-->
<Grid Grid.Row="3"
Visibility="{Binding VariableOnDraw_Visibility}">
<Grid.RowDefinitions>
<RowDefinition Height="0.7*"/>
<RowDefinition Height="0.3*"/>
<RowDefinition Height="0.7*"/>
<RowDefinition Height="0.6*"/>
<RowDefinition Height="0.3*"/>
<RowDefinition Height="0.6*"/>
<RowDefinition Height="0.7*"/>
<RowDefinition Height="0.3*"/>
<RowDefinition Height="0.7*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="1"
Text="Sensors"/>
<TextBlock Grid.Row="4"
Text="Door Index"/>
<TextBlock Grid.Row="7"
Text="Door Presence"/>
</Grid>
<!--TextBox variabili-->
<!--<Grid Grid.Column="1"
Grid.Row="3">-->
<Grid Grid.Column="1"
Grid.Row="3"
Visibility="{Binding VariableOnDraw_Visibility}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1.7*"/>
<RowDefinition Height="1.5*"/>
<RowDefinition Height="1.7*"/>
</Grid.RowDefinitions>
<Border Grid.Column="0"
Grid.Row="1"
Style="{StaticResource Table}"/>
<TextBlock Grid.Column="0"
Grid.Row="1"
Text="{Binding VariableList[6].sValue}"
Style="{StaticResource MachDrawVar_TextBlock}"/>
<TextBlock Grid.Column="0"
Grid.Row="2"
Text="{Binding VariableList[0].sValue}"
Style="{StaticResource MachDrawVar_TextBlock}"/>
<Border Grid.Column="1"
Grid.Row="1"
Style="{StaticResource Table}"/>
<TextBlock Grid.Column="1"
Grid.Row="1"
Text="{Binding VariableList[7].sValue}"
Style="{StaticResource MachDrawVar_TextBlock}"/>
<TextBlock Grid.Column="1"
Grid.Row="2"
Text="{Binding VariableList[1].sValue}"
Style="{StaticResource MachDrawVar_TextBlock}"/>
<Border Grid.Column="2"
Grid.Row="1"
Style="{StaticResource Table}"/>
<TextBlock Grid.Column="2"
Grid.Row="1"
Text="{Binding VariableList[8].sValue}"
Style="{StaticResource MachDrawVar_TextBlock}"/>
<TextBlock Grid.Column="2"
Grid.Row="2"
Text="{Binding VariableList[2].sValue}"
Style="{StaticResource MachDrawVar_TextBlock}"/>
</Grid>
<!--Sensori-->
<Grid Grid.Column="1"
Grid.Row="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="0.1*"/>
<ColumnDefinition Width="0.2*"/>
<ColumnDefinition Width="0.1*"/>
<ColumnDefinition Width="0.2*"/>
<ColumnDefinition Width="0.1*"/>
<ColumnDefinition Width="0.2*"/>
<ColumnDefinition Width="0.1*"/>
<ColumnDefinition Width="0.2*"/>
<ColumnDefinition Width="0.1*"/>
<ColumnDefinition Width="0.2*"/>
<ColumnDefinition Width="0.4*"/>
<ColumnDefinition Width="0.1*"/>
<ColumnDefinition Width="1.5*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1.7*"/>
<RowDefinition Height="1.5*"/>
<RowDefinition Height="1.7*"/>
</Grid.RowDefinitions>
<Ellipse Grid.Column="1"
Fill="{Binding VariableList[6].sValue, Converter={StaticResource StringToBackgroundConverter}}"
Style="{StaticResource Sensor}"/>
<Ellipse Grid.Column="3"
Fill="{Binding VariableList[7].sValue, Converter={StaticResource StringToBackgroundConverter}}"
Style="{StaticResource Sensor}"/>
<Ellipse Grid.Column="5"
Fill="{Binding VariableList[8].sValue, Converter={StaticResource StringToBackgroundConverter}}"
Style="{StaticResource Sensor}"/>
<Ellipse Grid.Column="7"
Fill="{Binding VariableList[9].sValue, Converter={StaticResource StringToBackgroundConverter}}"
Style="{StaticResource Sensor}"/>
<Ellipse Grid.Column="9"
Fill="{Binding VariableList[10].sValue, Converter={StaticResource StringToBackgroundConverter}}"
Style="{StaticResource Sensor}"/>
<Ellipse Grid.Column="12"
Fill="{Binding VariableList[11].sValue, Converter={StaticResource StringToBackgroundConverter}}"
Style="{StaticResource Sensor}"/>
</Grid>
<!--Porte-->
<Grid Grid.Column="1"
Grid.Row="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.7*"/>
<ColumnDefinition Width="2.5*"/>
<ColumnDefinition Width="0.3*"/>
<ColumnDefinition Width="2.5*"/>
<ColumnDefinition Width="0.3*"/>
<ColumnDefinition Width="2.5*"/>
<ColumnDefinition Width="0.7*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1.9*"/>
<RowDefinition Height="1.1*"/>
<RowDefinition Height="1.9*"/>
</Grid.RowDefinitions>
<Border Grid.Column="1"
Grid.Row="1"
Visibility="{Binding VariableList[0].sValue, Converter={StaticResource StringToVisibilityConverter}}"
Style="{StaticResource Door}">
<TextBlock Text="{Binding DoorOnMachineArray[0].nId}"
Style="{StaticResource MachDrawVar_TextBlock}"/>
</Border>
<Border Grid.Column="3"
Grid.Row="1"
Visibility="{Binding VariableList[1].sValue, Converter={StaticResource StringToVisibilityConverter}}"
Style="{StaticResource Door}">
<TextBlock Text="{Binding DoorOnMachineArray[1].nId}"
Style="{StaticResource MachDrawVar_TextBlock}"/>
</Border>
<Border Grid.Column="5"
Grid.Row="1"
Visibility="{Binding VariableList[2].sValue, Converter={StaticResource StringToVisibilityConverter}}"
Style="{StaticResource Door}">
<TextBlock Text="{Binding DoorOnMachineArray[2].nId}"
Style="{StaticResource MachDrawVar_TextBlock}"/>
</Border>
</Grid>
<!--Descrizione porte-->
<ItemsControl Grid.Column="1"
Grid.Row="4"
ItemsSource="{Binding DoorOnMachineArray}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="3"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Visibility="{Binding Converter={StaticResource DoorToVisibilityConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Grid.Column="0"
Grid.Row="0"
Text="Id"/>
<TextBlock Grid.Column="1"
Grid.Row="0"
Text="{Binding nId}"/>
<!--<TextBlock Grid.Column="0"
Grid.Row="1"
Text="Circular Index"/>
<TextBlock Grid.Column="1"
Grid.Row="1"
Text="{Binding nCircIndex}"/>-->
<TextBlock Grid.Column="0"
Grid.Row="2"
Text="State"/>
<TextBlock Grid.Column="1"
Grid.Row="2"
Text="{Binding nState}"/>
<TextBlock Grid.Column="0"
Grid.Row="3"
Text="DDF Name"/>
<TextBlock Grid.Column="1"
Grid.Row="3"
Text="{Binding sDDFName}"/>
<TextBlock Grid.Column="0"
Grid.Row="4"
Text="CSV Name"/>
<TextBlock Grid.Column="1"
Grid.Row="4"
Text="{Binding sCSVName}"/>
<!--<TextBlock Grid.Column="0"
Grid.Row="5"
Text="DoorCode"/>
<TextBlock Grid.Column="1"
Grid.Row="5"
Text="{Binding sDoorCode}"/>
<TextBlock Grid.Column="0"
Grid.Row="6"
Text="DoorDescription"/>
<TextBlock Grid.Column="1"
Grid.Row="6"
Text="{Binding sDoorDescription}"/>
<TextBlock Grid.Column="0"
Grid.Row="7"
Text="M1 CN Path"/>
<TextBlock Grid.Column="1"
Grid.Row="7"
Text="{Binding sM1CNPath}"/>
<TextBlock Grid.Column="0"
Grid.Row="8"
Text="M2 CN Path"/>
<TextBlock Grid.Column="1"
Grid.Row="8"
Text="{Binding sM2CNPath}"/>-->
<TextBlock Grid.Column="0"
Grid.Row="9"
Text="Load Time"/>
<TextBlock Grid.Column="1"
Grid.Row="9"
Text="{Binding sLoadTime}"/>
<TextBlock Grid.Column="0"
Grid.Row="10"
Text="Machining 1 Start"/>
<TextBlock Grid.Column="1"
Grid.Row="10"
Text="{Binding sMachining1Start}"/>
<TextBlock Grid.Column="0"
Grid.Row="11"
Text="Machining 1 End"/>
<TextBlock Grid.Column="1"
Grid.Row="11"
Text="{Binding sMachining1End}"/>
<TextBlock Grid.Column="0"
Grid.Row="12"
Text="Machining 2 Start"/>
<TextBlock Grid.Column="1"
Grid.Row="12"
Text="{Binding sMachining2Start}"/>
<TextBlock Grid.Column="0"
Grid.Row="13"
Text="Machining 2 End"/>
<TextBlock Grid.Column="1"
Grid.Row="13"
Text="{Binding sMachining2End}"/>
<TextBlock Grid.Column="0"
Grid.Row="14"
Text="UnloadTime"/>
<TextBlock Grid.Column="1"
Grid.Row="14"
Text="{Binding sUnloadTime}"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
<!--Lista circolare porte-->
<Grid Grid.Row="2"
Visibility="{Binding DoorCircList_Visibility}">
<ItemsControl ItemsSource="{Binding LuaDoorList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="10"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Grid.Column="0"
Grid.Row="0"
Text="Id"/>
<TextBlock Grid.Column="1"
Grid.Row="0"
Text="{Binding nId}"/>
<TextBlock Grid.Column="0"
Grid.Row="1"
Text="Circular Index"/>
<TextBlock Grid.Column="1"
Grid.Row="1"
Text="{Binding nCircIndex}"/>
<TextBlock Grid.Column="0"
Grid.Row="2"
Text="State"/>
<TextBlock Grid.Column="1"
Grid.Row="2"
Text="{Binding nState}"/>
<TextBlock Grid.Column="0"
Grid.Row="3"
Text="DDF Name"/>
<TextBlock Grid.Column="1"
Grid.Row="3"
Text="{Binding sDDFName}"/>
<TextBlock Grid.Column="0"
Grid.Row="4"
Text="CSV Name"/>
<TextBlock Grid.Column="1"
Grid.Row="4"
Text="{Binding sCSVName}"/>
<TextBlock Grid.Column="0"
Grid.Row="5"
Text="DoorCode"/>
<TextBlock Grid.Column="1"
Grid.Row="5"
Text="{Binding sDoorCode}"/>
<TextBlock Grid.Column="0"
Grid.Row="6"
Text="DoorDescription"/>
<TextBlock Grid.Column="1"
Grid.Row="6"
Text="{Binding sDoorDescription}"/>
<TextBlock Grid.Column="0"
Grid.Row="7"
Text="M1 CN Path"/>
<TextBlock Grid.Column="1"
Grid.Row="7"
Text="{Binding sM1CNPath}"/>
<TextBlock Grid.Column="0"
Grid.Row="8"
Text="M2 CN Path"/>
<TextBlock Grid.Column="1"
Grid.Row="8"
Text="{Binding sM2CNPath}"/>
<TextBlock Grid.Column="0"
Grid.Row="9"
Text="Load Time"/>
<TextBlock Grid.Column="1"
Grid.Row="9"
Text="{Binding sLoadTime}"/>
<TextBlock Grid.Column="0"
Grid.Row="10"
Text="Machining 1 Start"/>
<TextBlock Grid.Column="1"
Grid.Row="10"
Text="{Binding sMachining1Start}"/>
<TextBlock Grid.Column="0"
Grid.Row="11"
Text="Machining 1 End"/>
<TextBlock Grid.Column="1"
Grid.Row="11"
Text="{Binding sMachining1End}"/>
<TextBlock Grid.Column="0"
Grid.Row="12"
Text="Machining 2 Start"/>
<TextBlock Grid.Column="1"
Grid.Row="12"
Text="{Binding sMachining2Start}"/>
<TextBlock Grid.Column="0"
Grid.Row="13"
Text="Machining 2 End"/>
<TextBlock Grid.Column="1"
Grid.Row="13"
Text="{Binding sMachining2End}"/>
<TextBlock Grid.Column="0"
Grid.Row="14"
Text="UnloadTime"/>
<TextBlock Grid.Column="1"
Grid.Row="14"
Text="{Binding sUnloadTime}"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</Grid>
</Grid>
@@ -0,0 +1,3 @@
Public Class MachinePageV
End Class
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
<Grid x:Class="MainMenuV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
DataContext="{StaticResource MainMenuVM}"
WindowChrome.IsHitTestVisibleInChrome="True">
</Grid>
@@ -0,0 +1,9 @@
Imports System.ComponentModel.Composition
Imports Effector.Plugin.Interface
<Export(GetType(IPluginControl))>
<ExportMetadata("Name", "MainMenu")>
Public Class MainMenuV
Implements IPluginControl
End Class
@@ -0,0 +1,30 @@
Imports Effector.Plugin.Lib
Public Class MainMenuVM
Inherits VMBase
' Definizione comandi
Private m_cmdPage As ICommand
#Region "COMMANDS"
#Region "Page"
Public ReadOnly Property Page_Command As ICommand
Get
If m_cmdPage Is Nothing Then
m_cmdPage = New Command(AddressOf Page)
End If
Return m_cmdPage
End Get
End Property
Public Sub Page(nPage As Integer)
Map.refFiveLakesUIVM.SetSelPage(nPage)
End Sub
#End Region ' Page
#End Region ' COMMANDS
End Class
@@ -0,0 +1,39 @@
<Window x:Class="MultipleCopyWndV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
SizeToContent="WidthAndHeight"
WindowStartupLocation="CenterOwner"
ShowInTaskbar="False">
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="Numero di copie"
Margin="0,0,2.5,0"/>
<TextBox Grid.Column="1"
Text="{Binding sCopyNumber}"
Width="40"
Margin="2.5,0,0,0"/>
</Grid>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Button Content="Ok"
Command="{Binding Ok_Command}"
Margin="0,0,2.5,0"/>
<Button Grid.Column="1"
Content="Annulla"
Command="{Binding Cancel_Command}"
Margin="2.5,0,0,0"/>
</Grid>
</Grid>
</Window>
@@ -0,0 +1,19 @@
Public Class MultipleCopyWndV
Private WithEvents m_MultipleCopyWndVM As MultipleCopyWndVM
Sub New(Owner As Window, MultipleCopyWndVM As MultipleCopyWndVM)
'MyBase.New(Owner)
Me.Owner = Owner
' This call is required by the designer.
InitializeComponent()
Me.DataContext = MultipleCopyWndVM
' Assegno al riferimento locale al VM il VM preso dal DataContext
m_MultipleCopyWndVM = MultipleCopyWndVM
End Sub
Private Sub CloseWindow(bDialogResult As Boolean) Handles m_MultipleCopyWndVM.m_CloseWindow
Me.DialogResult = bDialogResult
End Sub
End Class
@@ -0,0 +1,66 @@
Public Class MultipleCopyWndVM
Inherits VMBase
Friend Event m_CloseWindow(bDialogResult As Boolean)
Private m_nCopyNumber As Integer
Public ReadOnly Property nCopyNumber As Integer
Get
Return m_nCopyNumber
End Get
End Property
Public Property sCopyNumber As String
Get
Return m_nCopyNumber.ToString()
End Get
Set(value As String)
If Not Integer.TryParse(value, m_nCopyNumber) Then
MessageBox.Show("Valore non impostabile come quantita' di porte!", "Errore!", MessageBoxButton.OK, MessageBoxImage.Error)
NotifyPropertyChanged(sCopyNumber)
End If
End Set
End Property
' Definizione comandi
Private m_cmdOk As ICommand
Private m_cmdCancel As ICommand
#Region "COMMANDS"
#Region "Ok"
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
Public Sub Ok()
If m_nCopyNumber > 0 Then RaiseEvent m_CloseWindow(True)
End Sub
#End Region ' Ok
#Region "Cancel"
Public ReadOnly Property Cancel_Command As ICommand
Get
If m_cmdCancel Is Nothing Then
m_cmdCancel = New Command(AddressOf Cancel)
End If
Return m_cmdCancel
End Get
End Property
Public Sub Cancel()
RaiseEvent m_CloseWindow(False)
End Sub
#End Region ' Cancel
#End Region ' COMMANDS
End Class
@@ -0,0 +1,59 @@
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
Imports System.Globalization
Imports System.Resources
Imports System.Windows
' General Information about an assembly is controlled through the following
' set of attributes. Change these attribute values to modify the information
' associated with an assembly.
' Review the values of the assembly attributes
<Assembly: AssemblyTitle("Effector.Plugin.StoneCut")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("Windows User")>
<Assembly: AssemblyProduct("Effector.Plugin.StoneCut")>
<Assembly: AssemblyCopyright("Copyright © 2020-2026 by Egalware s.r.l.")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(false)>
'In order to begin building localizable applications, set
'<UICulture>CultureYouAreCodingWith</UICulture> in your .vbproj file
'inside a <PropertyGroup>. For example, if you are using US english
'in your source files, set the <UICulture> to "en-US". Then uncomment the
'NeutralResourceLanguage attribute below. Update the "en-US" in the line
'below to match the UICulture setting in the project file.
'<Assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)>
'The ThemeInfo attribute describes where any theme specific and generic resource dictionaries can be found.
'1st parameter: where theme specific resource dictionaries are located
'(used if a resource is not found in the page,
' or application resource dictionaries)
'2nd parameter: where the generic resource dictionary is located
'(used if a resource is not found in the page,
'app, and any theme specific resource dictionaries)
<Assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)>
'The following GUID is for the ID of the typelib if this project is exposed to COM
<Assembly: Guid("b4747d9a-5420-4702-8e86-59fa0fb1ad51")>
' Version information for an assembly consists of the following four values:
'
' Major Version
' Minor Version
' Build Number
' Revision
'
' You can specify all the values or you can default the Build and Revision Numbers
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("3.1.5.1")>
<Assembly: AssemblyFileVersion("3.1.5.1")>
@@ -0,0 +1,62 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:$clrversion$
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder
'class via a tool like ResGen or Visual Studio.
'To add or remove a member, edit your .ResX file then rerun ResGen
'with the /str option, or rebuild your VS project.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("$safeprojectname$.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Overrides the current thread's CurrentUICulture property for all
''' resource lookups using this strongly typed resource class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set(ByVal value As Global.System.Globalization.CultureInfo)
resourceCulture = value
End Set
End Property
End Module
End Namespace
@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
+73
View File
@@ -0,0 +1,73 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings)
#Region "My.Settings Auto-Save Functionality"
#If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
End Sub
#End If
#End Region
Public Shared ReadOnly Property [Default]() As MySettings
Get
#If _MyType = "WindowsForms" Then
If Not addedHandler Then
SyncLock addedHandlerLockObject
If Not addedHandler Then
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
addedHandler = True
End If
End SyncLock
End If
#End If
Return defaultInstance
End Get
End Property
End Class
End Namespace
Namespace My
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.Effector.Plugin.StoneCut.My.MySettings
Get
Return Global.Effector.Plugin.StoneCut.My.MySettings.Default
End Get
End Property
End Module
End Namespace
@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
@@ -0,0 +1,52 @@
<Window x:Class="ProcessManagerV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="200"
Width="300">
<StackPanel>
<Grid HorizontalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="30"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="Arguments Queue Count: "/>
<TextBlock Grid.Column="1"
Text="{Binding ArgumentsQueue}"/>
<TextBlock Grid.Row="1"
Text="ResultQueue: "/>
<TextBlock Grid.Column="1"
Grid.Row="1"
Text="{Binding ResultQueueCount}"/>
</Grid>
<!--<DataGrid ItemsSource="{Binding ThreadList}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Process Status"
Binding="{Binding ProcessStatus}"/>
<DataGridTextColumn Header="Curr Request Id"
Binding="{Binding CurrRequest.nId}"/>
<DataGridTextColumn Header="Curr Request Args"
Binding="{Binding CurrRequest.sArgs}"/>
<DataGridTextColumn Header="Process Result"
Binding="{Binding nProcResult}"/>
</DataGrid.Columns>
</DataGrid>-->
<ItemsControl ItemsSource="{Binding ThreadList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding ProcessStatus}"/>
<TextBlock Text="{Binding CurrRequest.nId}"/>
<TextBlock Text="{Binding CurrRequest.sArgs}"/>
<TextBlock Text="{Binding nProcResult}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Window>
@@ -0,0 +1,19 @@
Public Class ProcessManagerV
Private WithEvents m_ProcessManagerVM As ProcessManagerVM
Sub New(Owner As Window, ProcessManagerVM As ProcessManagerVM)
'MyBase.New(Owner)
Me.Owner = Owner
' This call is required by the designer.
InitializeComponent()
Me.DataContext = ProcessManagerVM
' Assegno al riferimento locale al VM il VM preso dal DataContext
m_ProcessManagerVM = ProcessManagerVM
End Sub
'Private Sub CloseWindow(bDialogResult As Boolean) Handles m_ProcessManagerVM.m_CloseWindow
' Me.DialogResult = bDialogResult
'End Sub
End Class
@@ -0,0 +1,52 @@
Imports System.Windows.Threading
Imports System.Collections.ObjectModel
Public Class ProcessManagerVM
Inherits VMBase
Private m_UpdateDataTimer As New DispatcherTimer
Private m_ExecProcessManager As ExecProcessManager
Public ReadOnly Property ExecProcessManager As ExecProcessManager
Get
Return m_ExecProcessManager
End Get
End Property
Public ReadOnly Property ArgumentsQueue As String
Get
Return m_ExecProcessManager.ArgumentsQueueCount.ToString()
End Get
End Property
Public ReadOnly Property ResultQueue As String
Get
Return m_ExecProcessManager.ArgumentsResultQueueCount.ToString()
End Get
End Property
Public ReadOnly Property ThreadList As ObservableCollection(Of ThreadData)
Get
If Not IsNothing(m_ExecProcessManager.ThreadDataList) Then
Return New ObservableCollection(Of ThreadData)(m_ExecProcessManager.ThreadDataList.ToList())
Else
Return New ObservableCollection(Of ThreadData)
End If
End Get
End Property
Sub New(ExecProcessManager As ExecProcessManager)
m_ExecProcessManager = ExecProcessManager
m_UpdateDataTimer.Interval = New TimeSpan(0, 0, 1)
AddHandler m_UpdateDataTimer.Tick, AddressOf UpdateDataTimer_Tick
m_UpdateDataTimer.Start()
End Sub
Private Sub UpdateDataTimer_Tick(sender As Object, e As EventArgs)
NotifyPropertyChanged(NameOf(ArgumentsQueue))
NotifyPropertyChanged(NameOf(ResultQueue))
NotifyPropertyChanged(NameOf(ThreadList))
End Sub
End Class
Binary file not shown.

After

Width:  |  Height:  |  Size: 542 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 484 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 608 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 773 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 547 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 730 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 767 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 390 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 685 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 668 B

@@ -0,0 +1,272 @@
<Window x:Class="RestartWndV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Effector.Plugin.StoneCut"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Window.Resources>
<local:StringToVisibilityConverter x:Key="StringToVisibilityConverter"/>
<local:DoorToVisibilityConverter x:Key="DoorToVisibilityConverter"/>
<local:StateToVisibilityConverter x:Key="StateToVisibilityConverter"/>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Image Source="{Binding sMachineImagePath}"
Stretch="Uniform"/>
<!--Porte-->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.7*"/>
<ColumnDefinition Width="2.5*"/>
<ColumnDefinition Width="0.3*"/>
<ColumnDefinition Width="2.5*"/>
<ColumnDefinition Width="0.3*"/>
<ColumnDefinition Width="2.5*"/>
<ColumnDefinition Width="0.3*"/>
<ColumnDefinition Width="2.5*"/>
<ColumnDefinition Width="0.3*"/>
<ColumnDefinition Width="2.5*"/>
<ColumnDefinition Width="0.7*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="2.15*"/>
<RowDefinition Height="0.6*"/>
<RowDefinition Height="2.15*"/>
</Grid.RowDefinitions>
<Border Grid.Column="1"
Grid.Row="1"
Visibility="{Binding VariableList[0].sValue, Converter={StaticResource StringToVisibilityConverter}}"
Style="{StaticResource Door}">
<TextBlock Text="{Binding DoorOnMachineArray[0].nId}"
Style="{StaticResource MachDrawVar_TextBlock}"/>
</Border>
<Border Grid.Column="3"
Grid.Row="1"
Visibility="{Binding VariableList[1].sValue, Converter={StaticResource StringToVisibilityConverter}}"
Style="{StaticResource Door}">
<TextBlock Text="{Binding DoorOnMachineArray[1].nId}"
Style="{StaticResource MachDrawVar_TextBlock}"/>
</Border>
<Border Grid.Column="5"
Grid.Row="1"
Visibility="{Binding VariableList[2].sValue, Converter={StaticResource StringToVisibilityConverter}}"
Style="{StaticResource Door}">
<TextBlock Text="{Binding DoorOnMachineArray[2].nId}"
Style="{StaticResource MachDrawVar_TextBlock}"/>
</Border>
<Border Grid.Column="7"
Grid.Row="1"
Visibility="{Binding VariableList[3].sValue, Converter={StaticResource StringToVisibilityConverter}}"
Style="{StaticResource Door}">
<TextBlock Text="{Binding DoorOnMachineArray[3].nId}"
Style="{StaticResource MachDrawVar_TextBlock}"/>
</Border>
<Border Grid.Column="9"
Grid.Row="1"
Visibility="{Binding VariableList[4].sValue, Converter={StaticResource StringToVisibilityConverter}}"
Style="{StaticResource Door}">
<TextBlock Text="{Binding DoorOnMachineArray[4].nId}"
Style="{StaticResource MachDrawVar_TextBlock}"/>
</Border>
</Grid>
<!--Descrizione porte-->
<ItemsControl Grid.Row="1"
ItemsSource="{Binding DoorOnMachineArray}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="5"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Visibility="{Binding Converter={StaticResource DoorToVisibilityConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Grid.Column="0"
Grid.Row="0"
Text="Id"/>
<TextBox Grid.Column="1"
Grid.Row="0"
Text="{Binding nId}"/>
<TextBlock Grid.Column="0"
Grid.Row="1"
Text="Circular Index"/>
<TextBlock Grid.Column="1"
Grid.Row="1"
Text="{Binding nCircIndex}"/>
<TextBlock Grid.Column="0"
Grid.Row="2"
Text="State"/>
<TextBlock Grid.Column="1"
Grid.Row="2"
Text="{Binding nState}"/>
<TextBlock Grid.Column="0"
Grid.Row="3"
Text="DDF Name"/>
<TextBlock Grid.Column="1"
Grid.Row="3"
Text="{Binding sDDFName}"/>
<TextBlock Grid.Column="0"
Grid.Row="4"
Text="CSV Name"/>
<TextBlock Grid.Column="1"
Grid.Row="4"
Text="{Binding sCSVName}"/>
<!--<TextBlock Grid.Column="0"
Grid.Row="5"
Text="DoorCode"/>
<TextBlock Grid.Column="1"
Grid.Row="5"
Text="{Binding sDoorCode}"/>
<TextBlock Grid.Column="0"
Grid.Row="6"
Text="DoorDescription"/>
<TextBlock Grid.Column="1"
Grid.Row="6"
Text="{Binding sDoorDescription}"/>
<TextBlock Grid.Column="0"
Grid.Row="7"
Text="M1 CN Path"/>
<TextBlock Grid.Column="1"
Grid.Row="7"
Text="{Binding sM1CNPath}"/>
<TextBlock Grid.Column="0"
Grid.Row="8"
Text="M2 CN Path"/>
<TextBlock Grid.Column="1"
Grid.Row="8"
Text="{Binding sM2CNPath}"/>-->
<TextBlock Grid.Column="0"
Grid.Row="9"
Text="Load Time"/>
<TextBlock Grid.Column="1"
Grid.Row="9"
Text="{Binding sLoadTime}"/>
<TextBlock Grid.Column="0"
Grid.Row="10"
Text="Machining 1 Start"/>
<TextBlock Grid.Column="1"
Grid.Row="10"
Text="{Binding sMachining1Start}"/>
<TextBlock Grid.Column="0"
Grid.Row="11"
Text="Machining 1 End"/>
<TextBlock Grid.Column="1"
Grid.Row="11"
Text="{Binding sMachining1End}"/>
<TextBlock Grid.Column="0"
Grid.Row="12"
Text="Machining 2 Start"/>
<TextBlock Grid.Column="1"
Grid.Row="12"
Text="{Binding sMachining2Start}"/>
<TextBlock Grid.Column="0"
Grid.Row="13"
Text="Machining 2 End"/>
<TextBlock Grid.Column="1"
Grid.Row="13"
Text="{Binding sMachining2End}"/>
<TextBlock Grid.Column="0"
Grid.Row="14"
Text="UnloadTime"/>
<TextBlock Grid.Column="1"
Grid.Row="14"
Text="{Binding sUnloadTime}"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
<!--<ItemsControl ItemsSource="{Binding RestartDoorList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="1"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Visibility="{Binding nState, Converter={StaticResource StateToVisibilityConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Grid.Column="0"
Grid.Row="0"
Text="Id"/>
<TextBlock Grid.Column="1"
Grid.Row="0"
Text="{Binding nId}"/>
<TextBlock Grid.Column="0"
Grid.Row="1"
Text="Circular Index"/>
<TextBlock Grid.Column="1"
Grid.Row="1"
Text="{Binding nCircIndex}"/>
<TextBlock Grid.Column="0"
Grid.Row="2"
Text="State"/>
<TextBlock Grid.Column="1"
Grid.Row="2"
Text="{Binding nState}"/>
<ComboBox Grid.Column="1"
Grid.Row="2"
ItemsSource="{Binding DoorStateList}"
SelectedItem="{Binding SelDoorState}"/>
<TextBlock Grid.Column="0"
Grid.Row="3"
Text="DDF Name"/>
<TextBlock Grid.Column="1"
Grid.Row="3"
Text="{Binding sDDFName}"/>
<TextBlock Grid.Column="0"
Grid.Row="4"
Text="CSV Name"/>
<TextBlock Grid.Column="1"
Grid.Row="4"
Text="{Binding sCSVName}"/>
<TextBlock Text="Id"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>-->
<Button Grid.Row="1"
Content="Ok"
Command="{Binding Ok_Command}"/>
</Grid>
</Window>
@@ -0,0 +1,19 @@
Public Class RestartWndV
Private WithEvents m_RestartWndVM As RestartWndVM
Sub New(Owner As Window, RestartWndVM As RestartWndVM)
'MyBase.New(Owner)
Me.Owner = Owner
' This call is required by the designer.
InitializeComponent()
Me.DataContext = RestartWndVM
' Assegno al riferimento locale al VM il VM preso dal DataContext
m_RestartWndVM = RestartWndVM
End Sub
Private Sub CloseWindow(bDialogResult As Boolean) Handles m_RestartWndVM.m_CloseWindow
Me.DialogResult = bDialogResult
End Sub
End Class
@@ -0,0 +1,339 @@
Imports Effector.Plugin.Lib
Imports Newtonsoft.Json
Imports System.Collections.ObjectModel
Imports System.Globalization
Imports System.IO
Public Class RestartWndVM
Inherits VMBase
Friend Event m_CloseWindow(bDialogResult As Boolean)
' Definizione comandi
Private m_cmdOk As ICommand
Private m_RestartDoorList As ObservableCollection(Of RestartDoor)
Public ReadOnly Property RestartDoorList As ObservableCollection(Of RestartDoor)
Get
Return m_RestartDoorList
End Get
End Property
Private m_sMachineImagePath As String
Public ReadOnly Property sMachineImagePath As String
Get
Return m_sMachineImagePath
End Get
End Property
'Private m_DoorOnMachineArray(4) As RestartDoor
'Public ReadOnly Property DoorOnMachineArray As RestartDoor()
' Get
' Return m_DoorOnMachineArray
' End Get
'End Property
Private m_DoorOnMachineArray As New ObservableCollection(Of RestartDoor)
Public ReadOnly Property DoorOnMachineArray As ObservableCollection(Of RestartDoor)
Get
Return m_DoorOnMachineArray
End Get
End Property
Public ReadOnly Property VariableList As ObservableCollection(Of Variable)
Get
Return Map.refMachinePageVM.VariableList
End Get
End Property
#Region "CONSTRUCTOR"
Sub New()
Dim sBackupFilePath As String = ""
GetPluginPrivateProfileString("General", "BackupDir", "", sBackupFilePath)
sBackupFilePath &= "\LuaBackup.json"
Dim JsonLuaDoorList As List(Of JsonLuaDoor)
If File.Exists(sBackupFilePath) Then
Dim sReadedFile As String = File.ReadAllText(sBackupFilePath)
JsonLuaDoorList = JsonConvert.DeserializeObject(Of List(Of JsonLuaDoor))(sReadedFile)
JsonLuaDoorList = JsonLuaDoorList.OrderBy(Of Integer)(Function(x) x.nCircIndex).ToList()
End If
' creo posti in lista descrizioni
For nIndex As Integer = 0 To 4
m_DoorOnMachineArray.Add(Nothing)
Next
' leggo presenze porta
For nPositionIndex As Integer = 4 To 0 Step -1
If GetVariableFromName(1, "@WP_PR_0" & nPositionIndex.ToString()).dValue <> 0 Then
' verifico indice
Dim nCircindex As Integer = GetVariableFromName(1, "@DOORN_S" & nPositionIndex.ToString()).nValue
If nCircindex <> 0 Then
m_DoorOnMachineArray(nPositionIndex) = New RestartDoor(JsonLuaDoorList(nCircindex - 1))
End If
End If
Next
NotifyPropertyChanged(NameOf(DoorOnMachineArray))
'If File.Exists(sBackupFilePath) Then
' Dim sReadedFile As String = File.ReadAllText(sBackupFilePath)
' Dim JsonLuaDoorList As List(Of JsonLuaDoor) = JsonConvert.DeserializeObject(Of List(Of JsonLuaDoor))(sReadedFile)
' JsonLuaDoorList = JsonLuaDoorList.OrderBy(Of Integer)(Function(x) x.nCircIndex).ToList()
' m_RestartDoorList = New ObservableCollection(Of RestartDoor)((From JsonLuaDoor In Map.refDoorListPageVM.DoorList
' Select New RestartDoor(JsonLuaDoor)).ToList())
' For JsonLuaDoorIndex = 0 To JsonLuaDoorList.Count - 1
' Dim JsonLuaDoor As JsonLuaDoor = JsonLuaDoorList(JsonLuaDoorIndex)
' Dim RestartDoor As RestartDoor = m_RestartDoorList.FirstOrDefault(Function(x) x.nId = JsonLuaDoor.nId)
' If Not IsNothing(RestartDoor) Then
' RestartDoor.Update(JsonLuaDoor)
' End If
' Next
'End If
' se macchina 1
Dim sResourcesDirPath As String = ""
GetPluginPrivateProfileString(S_GENERAL, K_RESOURCESDIR, "", sResourcesDirPath)
m_sMachineImagePath = sResourcesDirPath & "\Multiax-C1223Ripartenza.png"
End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
Private Function GetVariableFromName(nMachIndex As Integer, sName As String) As Variable
Return Map.refMachinePageVM.VariableList.FirstOrDefault(Function(x) x.nMachine = nMachIndex AndAlso x.sName = sName)
End Function
#End Region ' METHODS
#Region "COMMANDS"
#Region "Ok"
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
Public Sub Ok()
RaiseEvent m_CloseWindow(True)
End Sub
#End Region ' Ok
#End Region ' COMMANDS
End Class
Public Class StateToVisibilityConverter
Implements IValueConverter
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.Convert
If IsNothing(value) OrElse Not TypeOf value Is Integer Then Return Visibility.Collapsed
Return If(value > 0, Visibility.Visible, Visibility.Collapsed)
End Function
Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.ConvertBack
Throw New NotImplementedException()
End Function
End Class
Public Class RestartDoor
Inherits VMBase
Private m_nId As Integer = -1
Public ReadOnly Property nId As Integer
Get
Return m_nId
End Get
End Property
Private m_nCircIndex As Integer = -1
Public ReadOnly Property nCircIndex As Integer
Get
Return m_nCircIndex
End Get
End Property
Private m_nState As Integer = 0
Public ReadOnly Property nState As Integer
Get
Return m_nState
End Get
End Property
Private m_DoorStateList As New List(Of IdNameStruct)({New IdNameStruct(0, "Not On Machine"),
New IdNameStruct(1, "Imported"),
New IdNameStruct(2, "On Load"),
New IdNameStruct(3, "On Machine 1"),
New IdNameStruct(4, "On Medium Station"),
New IdNameStruct(6, "On Machine 2"),
New IdNameStruct(7, "On Unload"),
New IdNameStruct(8, "Produced"),
New IdNameStruct(100, "Scrap")})
Public ReadOnly Property DoorStateList As List(Of IdNameStruct)
Get
Return m_DoorStateList
End Get
End Property
Public Property SelDoorState As IdNameStruct
Get
Return m_DoorStateList.FirstOrDefault(Function(x) x.Id = m_nState)
End Get
Set(value As IdNameStruct)
m_nState = value.Id
End Set
End Property
Private m_sDoorCode As String = ""
Public ReadOnly Property sDoorCode As String
Get
Return m_sDoorCode
End Get
End Property
Private m_sDoorDescription As String = ""
Public ReadOnly Property sDoorDescription As String
Get
Return m_sDoorDescription
End Get
End Property
Private m_sDDFName As String = ""
Public ReadOnly Property sDDFName As String
Get
Return m_sDDFName
End Get
End Property
Private m_sCSVName As String = ""
Public ReadOnly Property sCSVName As String
Get
Return m_sCSVName
End Get
End Property
Private m_sM1CNPath As String = ""
Public ReadOnly Property sM1CNPath As String
Get
Return m_sM1CNPath
End Get
End Property
Private m_sM2CNPath As String = ""
Public ReadOnly Property sM2CNPath As String
Get
Return m_sM2CNPath
End Get
End Property
Private m_dtLoadTime As DateTime
Public ReadOnly Property sLoadTime As String
Get
Return m_dtLoadTime.ToString("yy/MM/dd HH:mm:ss")
End Get
End Property
Private m_dtMachining1Start As DateTime
Public ReadOnly Property sMachining1Start As String
Get
Return m_dtMachining1Start.ToString("yy/MM/dd HH:mm:ss")
End Get
End Property
Private m_dtMachining1End As DateTime
Public ReadOnly Property sMachining1End As String
Get
Return m_dtMachining1End.ToString("yy/MM/dd HH:mm:ss")
End Get
End Property
Private m_dtMachining2Start As DateTime
Public ReadOnly Property sMachining2Start As String
Get
Return m_dtMachining2Start.ToString("yy/MM/dd HH:mm:ss")
End Get
End Property
Private m_dtMachining2End As DateTime
Public ReadOnly Property sMachining2End As String
Get
Return m_dtMachining2End.ToString("yy/MM/dd HH:mm:ss")
End Get
End Property
Private m_dtUnloadTime As DateTime
Public ReadOnly Property sUnloadTime As String
Get
Return m_dtUnloadTime.ToString("yy/MM/dd HH:mm:ss")
End Get
End Property
Sub New(Id As Integer, IndiceCirc As Integer, Stato As Integer, CodicePorta As String, DescrizionePorta As String, NomeDDF As String, NomeCSV As String,
CN_macchina_1 As String, CN_macchina_2 As String, tempo_carico As Long, tempo_inizio_lav_1 As Long, tempo_fine_lav_1 As Long, tempo_inizio_lav_2 As Long,
tempo_fine_lav_2 As Long, tempo_scarico As Long)
m_nId = Id
m_nCircIndex = IndiceCirc
m_nState = Stato
m_sDoorCode = CodicePorta
m_sDoorDescription = DescrizionePorta
m_sDDFName = NomeDDF
m_sCSVName = NomeCSV
m_sM1CNPath = CN_macchina_1
m_sM2CNPath = CN_macchina_2
m_dtLoadTime = New DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(tempo_carico).ToLocalTime()
m_dtMachining1Start = New DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(tempo_inizio_lav_1).ToLocalTime()
m_dtMachining1End = New DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(tempo_fine_lav_1).ToLocalTime()
m_dtMachining2Start = New DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(tempo_inizio_lav_2).ToLocalTime()
m_dtMachining2End = New DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(tempo_fine_lav_2).ToLocalTime()
m_dtUnloadTime = New DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(tempo_scarico).ToLocalTime()
End Sub
Sub New(Door As Door)
m_nId = Door.nId
m_nCircIndex = 0
m_nState = 0
'm_sDDFName = Door.sFileName
'm_sCSVName = Door.sCSVName
m_sM1CNPath = ""
m_sM2CNPath = ""
m_dtLoadTime = DateTime.MinValue
m_dtMachining1Start = DateTime.MinValue
m_dtMachining1End = DateTime.MinValue
m_dtMachining2Start = DateTime.MinValue
m_dtMachining2End = DateTime.MinValue
m_dtUnloadTime = DateTime.MinValue
End Sub
Friend Sub New(JsonLuaDoor As JsonLuaDoor)
m_nId = JsonLuaDoor.nId
m_nCircIndex = JsonLuaDoor.nCircIndex
m_nState = JsonLuaDoor.nState
m_sDDFName = JsonLuaDoor.sDDFName
m_sCSVName = JsonLuaDoor.sCSVName
m_sM1CNPath = JsonLuaDoor.sM1CNPath
m_sM2CNPath = JsonLuaDoor.sM2CNPath
m_dtLoadTime = JsonLuaDoor.dtLoadTime
m_dtMachining1Start = JsonLuaDoor.dtMachining1Start
m_dtMachining1End = JsonLuaDoor.dtMachining1End
m_dtMachining2Start = JsonLuaDoor.dtMachining2Start
m_dtMachining2End = JsonLuaDoor.dtMachining2End
m_dtUnloadTime = JsonLuaDoor.dtUnloadTime
End Sub
End Class
@@ -0,0 +1,12 @@
<UserControl x:Class="StatisticsPageV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Effector.Plugin.StoneCut"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
</Grid>
</UserControl>
@@ -0,0 +1,3 @@
Public Class StatisticsPageV
End Class
@@ -0,0 +1,3 @@
Public Class StatisticsPageVM
End Class
@@ -0,0 +1,69 @@
''' <summary>
''' A command whose sole purpose is to
''' relay its functionality to other
''' objects by invoking delegates. The
''' default return value for the CanExecute
''' method is 'true'.
''' </summary>
Public Class Command
Implements ICommand
#Region "Fields"
Private ReadOnly _execute As Action(Of Object)
Private ReadOnly _canExecute As Predicate(Of Object)
#End Region ' Fields
#Region "Constructors"
''' <summary>
''' Creates a new command that can always execute.
''' </summary>
''' <param name="execute">The execution logic.</param>
Public Sub New(ByVal execute As Action(Of Object))
Me.New(execute, Nothing)
End Sub
''' <summary>
''' Creates a new command.
''' </summary>
''' <param name="execute">The execution logic.</param>
''' <param name="canExecute">The execution status logic.</param>
Public Sub New(ByVal execute As Action(Of Object), ByVal canExecute As Predicate(Of Object))
If execute Is Nothing Then
Throw New ArgumentNullException("execute")
End If
_execute = execute
_canExecute = canExecute
End Sub
#End Region ' Constructors
#Region "ICommand Members"
<DebuggerStepThrough> _
Public Function CanExecute(ByVal parameter As Object) As Boolean Implements ICommand.CanExecute
Return If(_canExecute Is Nothing, True, _canExecute(parameter))
End Function
Public Custom Event CanExecuteChanged As EventHandler Implements ICommand.CanExecuteChanged
AddHandler(ByVal value As EventHandler)
AddHandler CommandManager.RequerySuggested, value
End AddHandler
RemoveHandler(ByVal value As EventHandler)
RemoveHandler CommandManager.RequerySuggested, value
End RemoveHandler
RaiseEvent(ByVal sender As System.Object, ByVal e As System.EventArgs)
End RaiseEvent
End Event
Public Sub Execute(ByVal parameter As Object) Implements ICommand.Execute
_execute(parameter)
End Sub
#End Region ' ICommand Members
End Class
@@ -0,0 +1,317 @@
<ResourceDictionary x:Class="Dictionary"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Effector.Plugin.StoneCut"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<!--<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Effector.Plugin.Lib;component/Themes/Generic.xaml" />
</ResourceDictionary.MergedDictionaries>-->
<!--
Assign a Key to every Panel ViewModel to use
it in xaml file(ProjectView.xaml).
-->
<local:FiveLakesUIVM x:Key="FiveLakesUIVM"/>
<local:MainMenuVM x:Key="MainMenuVM"/>
<local:DoorListPageVM x:Key="DoorListVM"/>
<local:MachinePageVM x:Key="MachinePageVM"/>
<local:StatisticsPageVM x:Key="StatisticsPageVM"/>
<!--Colori predefiniti-->
<!--#e8eef5-->
<Color x:Key="Effector_LightBlue_Color" R="232" G="238" B="245" A="255"/>
<SolidColorBrush x:Key="Effector_LightBlue" Color="{StaticResource Effector_LightBlue_Color}" />
<!--#afc5d6-->
<Color x:Key="Effector_Blue_Color" R="175" G="197" B="214" A="255"/>
<SolidColorBrush x:Key="Effector_Blue" Color="{StaticResource Effector_Blue_Color}" />
<!--#749fc4-->
<Color x:Key="Effector_DarkBlue_Color" R="116" G="159" B="196" A="255"/>
<SolidColorBrush x:Key="Effector_DarkBlue" Color="{StaticResource Effector_DarkBlue_Color}" />
<!--#92bde3-->
<Color x:Key="Effector_LightBlue_Status_Color" R="146" G="189" B="227" A="255"/>
<SolidColorBrush x:Key="Effector_LightBlue_Status" Color="{StaticResource Effector_LightBlue_Status_Color}" />
<!--#5682a6-->
<Color x:Key="Effector_Blue_Status_Color" R="86" G="130" B="166" A="255"/>
<SolidColorBrush x:Key="Effector_Blue_Status" Color="{StaticResource Effector_Blue_Status_Color}" />
<!--#cd5c5c-->
<Color x:Key="Effector_Red_Status_Color" R="205" G="92" B="92" A="255"/>
<SolidColorBrush x:Key="Effector_Red_Status" Color="{StaticResource Effector_Red_Status_Color}" />
<!--#b1cbaa-->
<Color x:Key="Effector_Green_Status_Color" R="177" G="203" B="170" A="255"/>
<SolidColorBrush x:Key="Effector_Green_Status" Color="{StaticResource Effector_Green_Status_Color}" />
<!--#9c9c9c-->
<Color x:Key="Effector_Gray_Status_Color" R="156" G="156" B="156" A="255"/>
<SolidColorBrush x:Key="Effector_Gray_Status" Color="{StaticResource Effector_Gray_Status_Color}" />
<!--#ffd932-->
<Color x:Key="Effector_Yellow_Status_Color" R="255" G="217" B="50" A="255"/>
<SolidColorBrush x:Key="Effector_Yellow_Status" Color="{StaticResource Effector_Yellow_Status_Color}" />
<!--#6398c7-->
<Color x:Key="Effector_LightBlue_SelStatus_Color" R="99" G="152" B="199" A="255"/>
<SolidColorBrush x:Key="Effector_LightBlue_SelStatus" Color="{StaticResource Effector_LightBlue_SelStatus_Color}" />
<!--#4b677e-->
<Color x:Key="Effector_Blue_SelStatus_Color" R="75" G="103" B="126" A="255"/>
<SolidColorBrush x:Key="Effector_Blue_SelStatus" Color="{StaticResource Effector_Blue_SelStatus_Color}" />
<!--#a94444-->
<Color x:Key="Effector_Red_SelStatus_Color" R="169" G="68" B="68" A="255"/>
<SolidColorBrush x:Key="Effector_Red_SelStatus" Color="{StaticResource Effector_Red_SelStatus_Color}" />
<!--#89aa81-->
<Color x:Key="Effector_Green_SelStatus_Color" R="137" G="170" B="129" A="255"/>
<SolidColorBrush x:Key="Effector_Green_SelStatus" Color="{StaticResource Effector_Green_SelStatus_Color}" />
<!--#7d7d7d-->
<Color x:Key="Effector_Gray_SelStatus_Color" R="125" G="125" B="125" A="255"/>
<SolidColorBrush x:Key="Effector_Gray_SelStatus" Color="{StaticResource Effector_Gray_SelStatus_Color}" />
<!--#dcb718-->
<Color x:Key="Effector_Yellow_SelStatus_Color" R="220" G="183" B="24" A="255"/>
<SolidColorBrush x:Key="Effector_Yellow_SelStatus" Color="{StaticResource Effector_Yellow_SelStatus_Color}" />
<!--#e5ebf1-->
<Color x:Key="Effector_White_SelStatus_Color" R="229" G="235" B="241" A="255"/>
<SolidColorBrush x:Key="Effector_White_SelStatus" Color="{StaticResource Effector_Yellow_SelStatus_Color}" />
<!--#1C1D22-->
<Color x:Key="Omag_Black_Color" R="28" G="29" B="34" A="255"/>
<SolidColorBrush x:Key="Omag_Black" Color="{StaticResource Omag_Black_Color}" />
<!--#484D55-->
<Color x:Key="Omag_DarkGray_Color" R="72" G="77" B="85" A="255"/>
<SolidColorBrush x:Key="Omag_DarkGray" Color="{StaticResource Omag_DarkGray_Color}" />
<!--#636974-->
<Color x:Key="Omag_LightGray_Color" R="99" G="105" B="116" A="255"/>
<SolidColorBrush x:Key="Omag_LightGray" Color="{StaticResource Omag_LightGray_Color}" />
<Style x:Key="Table_Button" TargetType="{x:Type Button}">
<Setter Property="Background" Value="{StaticResource Omag_Black}"/>
</Style>
<!--#BC373E--><!--
<Color x:Key="Effector_Orange_Color" R="188" G="55" B="62" A="255"/>
<SolidColorBrush x:Key="Effector_Orange" Color="{StaticResource Effector_Orange_Color}" />-->
<!--#A74C77--><!--
<Color x:Key="Effector_Purple_Color" R="167" G="76" B="119" A="255"/>
<SolidColorBrush x:Key="Effector_Purple" Color="{StaticResource Effector_Purple_Color}" />-->
<!--Colori default dei controlli-->
<SolidColorBrush x:Key="Button.Static.Background" Color="#FFDDDDDD"/>
<SolidColorBrush x:Key="Button.Static.Border" Color="#FF707070"/>
<SolidColorBrush x:Key="Button.MouseOver.Background" Color="#FFBEE6FD"/>
<SolidColorBrush x:Key="Button.MouseOver.Border" Color="#FF3C7FB1"/>
<SolidColorBrush x:Key="Button.Pressed.Background" Color="#FFC4E5F6"/>
<SolidColorBrush x:Key="Button.Pressed.Border" Color="#FF2C628B"/>
<SolidColorBrush x:Key="Button.Disabled.Background" Color="#FFF4F4F4"/>
<SolidColorBrush x:Key="Button.Disabled.Border" Color="#FFADB2B5"/>
<SolidColorBrush x:Key="Button.Disabled.Foreground" Color="#FF838383"/>
<Style x:Key="FocusVisual">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Margin="2" StrokeDashArray="1 2" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" SnapsToDevicePixels="true" StrokeThickness="1"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!--Risorsa che toglie le animazioni dai menù popup per evitare che i menù mru di scelta dei file rimangano aperti se il file è grosso -->
<!--o viene eseguito un lua che non aggiorna l'interfaccia-->
<PopupAnimation x:Key="{x:Static SystemParameters.MenuPopupAnimationKey}">None</PopupAnimation>
<!--convertert per visibilita' stringa di testo con misure in StatusBar--><!--
<PrintApp:StringToVisibilityConverter x:Key="StringToVisibilityConverter"/>-->
<GridLength x:Key="TitleBarHeight">30</GridLength>
<Thickness x:Key="WindowBorder_Thickness">2</Thickness>
<sys:Double x:Key="WindowBorder_Height">2</sys:Double>
<!--Button-->
<!--<Style TargetType="{x:Type Button}">
<Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
<Setter Property="Background" Value="{StaticResource Button.Static.Background}"/>
<Setter Property="BorderBrush" Value="{StaticResource Button.Static.Border}"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="1"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="true">
<ContentPresenter x:Name="contentPresenter" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsDefaulted" Value="true">
<Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" TargetName="border" Value="{StaticResource Button.MouseOver.Background}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.MouseOver.Border}"/>
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter Property="Background" TargetName="border" Value="{StaticResource Button.Pressed.Background}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Pressed.Border}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Background" TargetName="border" Value="{StaticResource Button.Disabled.Background}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Disabled.Border}"/>
<Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="{StaticResource Button.Disabled.Foreground}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>-->
<!--<Style x:Key="DoorList_Button" TargetType="{x:Type Button}">
<Setter Property="Height" Value="30"/>
<Setter Property="Padding" Value="10,0,10,0"/>
</Style>-->
<!--ToggleButton-->
<Style TargetType="{x:Type ToggleButton}">
<Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
<Setter Property="Background" Value="{StaticResource Effector_Blue}"/>
<Setter Property="BorderBrush" Value="{StaticResource Button.Static.Border}"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="1"/>
<Setter Property="FontFamily" Value="/Resources/Fonts/#Roboto"/>
<Setter Property="FontWeight" Value="Medium"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border x:Name="border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="true">
<ContentPresenter x:Name="contentPresenter" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="Button.IsDefaulted" Value="true">
<Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" TargetName="border" Value="{StaticResource Button.MouseOver.Background}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.MouseOver.Border}"/>
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter Property="Background" TargetName="border" Value="{StaticResource Button.Pressed.Background}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Pressed.Border}"/>
</Trigger>
<Trigger Property="IsChecked" Value="true">
<Setter Property="Background" TargetName="border" Value="{StaticResource Effector_DarkBlue}"/>
<Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="White"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Background" TargetName="border" Value="{StaticResource Button.Disabled.Background}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Disabled.Border}"/>
<Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="{StaticResource Button.Disabled.Foreground}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="MainMenu_ToggleButton" TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="Padding" Value="25,0,25,0"/>
</Style>
<!--Border-->
<Style x:Key="Parameter_MachinePage_Border" TargetType="{x:Type GroupBox}">
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="BorderBrush" Value="DarkGray"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
<!-- Custom SelectedItem colors for DataGrid -->
<!--<Style x:Key="RowDataGrid_CustomHighLight" TargetType="{x:Type DataGridRow}">
<Setter Property="BorderBrush" Value="LightGray" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="BorderThickness" Value="2,2,2,2" />
--><!--<Setter Property="BorderBrush" Value="Cyan" />--><!--
<Setter Property="Padding" Value="0,0,0,0" />
<Setter Property="Margin" Value="-2,0,-2,0" />
<Setter Property="Foreground" Value="Blue" />
</Trigger>
</Style.Triggers>
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="Transparent" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}" Color="Black" />
</Style.Resources>
</Style>-->
<!--Styles for DataGrid columns-->
<Style x:Key="DataGridTextColumn_TextBlock" TargetType="{x:Type TextBlock}">
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<Style x:Key="DataGridTextColumn_TextBox" TargetType="{x:Type TextBox}">
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
<Style x:Key="DataGridTemplateColumn_ComboBox" TargetType="{x:Type ComboBox}">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
<!--Style for page tabcontrol-->
<Style x:Key="MainPage_Tabcontrol" TargetType="{x:Type TabControl}">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Margin" Value="0"/>
<Setter Property="Padding" Value="0"/>
</Style>
<!--Stili per disegno macchina con porte-->
<Style x:Key="Table" TargetType="Border">
<Setter Property="BorderBrush" Value="Gray"/>
<Setter Property="BorderThickness" Value="2"/>
</Style>
<Style x:Key="Door" TargetType="Border">
<Setter Property="BorderBrush" Value="SaddleBrown"/>
<Setter Property="BorderThickness" Value="5"/>
<Setter Property="Background" Value="SandyBrown"/>
</Style>
<Style x:Key="Advancement_Button" TargetType="Button">
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="TextBlock.TextAlignment" Value="Center"/>
</Style>
<Style x:Key="Sensor" TargetType="Ellipse">
<Setter Property="Height" Value="{Binding ActualWidth, RelativeSource={RelativeSource Self}}"/>
</Style>
<Style x:Key="MachDrawVar_TextBlock" TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<Style x:Key="MachDrawVar_CheckBox" TargetType="CheckBox">
<Setter Property="IsHitTestVisible" Value="False"/>
<Setter Property="Focusable" Value="False"/>
<Setter Property="BorderThickness" Value="0"/>
</Style>
<Style x:Key="TextBlock.DataGridTextColumn.DoorList" TargetType="{x:Type TextBlock}">
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<Style x:Key="TextBox.DataGridTextColumn.DoorList" TargetType="{x:Type TextBox}">
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
</ResourceDictionary>
@@ -0,0 +1,232 @@
Imports System.ComponentModel.Composition
Imports System.Globalization
Imports Effector.Plugin.Interface
<Export(GetType(IPluginControl))>
<ExportMetadata("Name", "Dictionary")>
Public Class Dictionary
Inherits ResourceDictionary
Implements IPluginControl
Public Shared ReadOnly MySceneHostVM As String = "MySceneHostVM"
#Region "Colors"
'Private Shared m_Button_Static_Background As SolidColorBrush = New BrushConverter().ConvertFrom("#FFDDDDDD")
'Public Shared ReadOnly Property Button_Static_Background As SolidColorBrush
' Get
' Return m_Button_Static_Background
' End Get
'End Property
'Private Shared m_TabControl_Header_Background As LinearGradientBrush = Application.Current.FindResource("TabItem.Static.Background")
'Public Shared ReadOnly Property TabControl_Header_Background As LinearGradientBrush
' Get
' Return m_TabControl_Header_Background
' End Get
'End Property
Private Shared m_Effector_LightBlue As SolidColorBrush = Application.Current.FindResource("Effector_LightBlue")
Public Shared ReadOnly Property Effector_LightBlue As SolidColorBrush
Get
Return m_Effector_LightBlue
End Get
End Property
Private Shared m_Effector_Blue As SolidColorBrush = Application.Current.FindResource("Effector_Blue")
Public Shared ReadOnly Property Effector_Blue As SolidColorBrush
Get
Return m_Effector_Blue
End Get
End Property
Private Shared m_Effector_DarkBlue As SolidColorBrush = Application.Current.FindResource("Effector_DarkBlue")
Public Shared ReadOnly Property Effector_DarkBlue As SolidColorBrush
Get
Return m_Effector_DarkBlue
End Get
End Property
Private Shared m_Effector_LightBlue_Status As SolidColorBrush = Application.Current.FindResource("Effector_LightBlue_Status")
Public Shared ReadOnly Property Effector_LightBlue_Status As SolidColorBrush
Get
Return m_Effector_LightBlue_Status
End Get
End Property
Private Shared m_Effector_Blue_Status As SolidColorBrush = Application.Current.FindResource("Effector_Blue_Status")
Public Shared ReadOnly Property Effector_Blue_Status As SolidColorBrush
Get
Return m_Effector_Blue_Status
End Get
End Property
Private Shared m_Effector_Red_Status As SolidColorBrush = Application.Current.FindResource("Effector_Red_Status")
Public Shared ReadOnly Property Effector_Red_Status As SolidColorBrush
Get
Return m_Effector_Red_Status
End Get
End Property
Private Shared m_Effector_Green_Status As SolidColorBrush = Application.Current.FindResource("Effector_Green_Status")
Public Shared ReadOnly Property Effector_Green_Status As SolidColorBrush
Get
Return m_Effector_Green_Status
End Get
End Property
Private Shared m_Effector_Gray_Status As SolidColorBrush = Application.Current.FindResource("Effector_Gray_Status")
Public Shared ReadOnly Property Effector_Gray_Status As SolidColorBrush
Get
Return m_Effector_Gray_Status
End Get
End Property
Private Shared m_Effector_Yellow_Status As SolidColorBrush = Application.Current.FindResource("Effector_Yellow_Status")
Public Shared ReadOnly Property Effector_Yellow_Status As SolidColorBrush
Get
Return m_Effector_Yellow_Status
End Get
End Property
Private Shared m_Effector_LightBlue_SelStatus As SolidColorBrush = Application.Current.FindResource("Effector_LightBlue_SelStatus")
Public Shared ReadOnly Property Effector_LightBlue_SelStatus As SolidColorBrush
Get
Return m_Effector_LightBlue_SelStatus
End Get
End Property
Private Shared m_Effector_Blue_SelStatus As SolidColorBrush = Application.Current.FindResource("Effector_Blue_SelStatus")
Public Shared ReadOnly Property Effector_Blue_SelStatus As SolidColorBrush
Get
Return m_Effector_Blue_SelStatus
End Get
End Property
Private Shared m_Effector_Red_SelStatus As SolidColorBrush = Application.Current.FindResource("Effector_Red_SelStatus")
Public Shared ReadOnly Property Effector_Red_SelStatus As SolidColorBrush
Get
Return m_Effector_Red_SelStatus
End Get
End Property
Private Shared m_Effector_Green_SelStatus As SolidColorBrush = Application.Current.FindResource("Effector_Green_SelStatus")
Public Shared ReadOnly Property Effector_Green_SelStatus As SolidColorBrush
Get
Return m_Effector_Green_SelStatus
End Get
End Property
Private Shared m_Effector_Gray_SelStatus As SolidColorBrush = Application.Current.FindResource("Effector_Gray_SelStatus")
Public Shared ReadOnly Property Effector_Gray_SelStatus As SolidColorBrush
Get
Return m_Effector_Gray_SelStatus
End Get
End Property
Private Shared m_Effector_Yellow_SelStatus As SolidColorBrush = Application.Current.FindResource("Effector_Yellow_SelStatus")
Public Shared ReadOnly Property Effector_Yellow_SelStatus As SolidColorBrush
Get
Return m_Effector_Yellow_SelStatus
End Get
End Property
Private Shared m_Effector_White_SelStatus As SolidColorBrush = Application.Current.FindResource("Effector_White_SelStatus")
Public Shared ReadOnly Property Effector_White_SelStatus As SolidColorBrush
Get
Return m_Effector_White_SelStatus
End Get
End Property
'Private Shared m_Omag_Black As SolidColorBrush = Application.Current.FindResource("Omag_Black")
'Public Shared ReadOnly Property Omag_Black As SolidColorBrush
' Get
' Return m_Omag_Black
' End Get
'End Property
'Private Shared m_Omag_DarkGray As SolidColorBrush = Application.Current.FindResource("Omag_DarkGray")
'Public Shared ReadOnly Property Omag_DarkGray As SolidColorBrush
' Get
' Return m_Omag_DarkGray
' End Get
'End Property
'Private Shared m_Omag_LightGray As SolidColorBrush = Application.Current.FindResource("Omag_LightGray")
'Public Shared ReadOnly Property Omag_LightGray As SolidColorBrush
' Get
' Return m_Omag_LightGray
' End Get
'End Property
'Private Shared m_Effector_Orange As SolidColorBrush = Application.Current.FindResource("Effector_Orange")
'Public Shared ReadOnly Property Effector_Orange As SolidColorBrush
' Get
' Return m_Effector_Orange
' End Get
'End Property
'Private Shared m_Icarus_LightBlue As SolidColorBrush = Application.Current.FindResource("Effector_LightBlue_Color")
'Public Shared ReadOnly Property Icarus_LightBlue As SolidColorBrush
' Get
' Return m_Icarus_LightBlue
' End Get
'End Property
'Private Shared m_Icarus_Blue As SolidColorBrush = Application.Current.FindResource("Icarus_Blue")
'Public Shared ReadOnly Property Icarus_Blue As SolidColorBrush
' Get
' Return m_Icarus_Blue
' End Get
'End Property
'Private Shared m_Icarus_Green As SolidColorBrush = Application.Current.FindResource("Icarus_Green")
'Public Shared ReadOnly Property Icarus_Green As SolidColorBrush
' Get
' Return m_Icarus_Green
' End Get
'End Property
'Private Shared m_Icarus_Purple As SolidColorBrush = Application.Current.FindResource("Icarus_Purple")
'Public Shared ReadOnly Property Icarus_Purple As SolidColorBrush
' Get
' Return m_Icarus_Purple
' End Get
'End Property
'<SolidColorBrush x : Key="Icarus_Gray" Color="#92908d" />
'<SolidColorBrush x : Key="Icarus_LightBlue" Color="#3c89c9" />
'<SolidColorBrush x : Key="Icarus_Blue" Color="#2e5a81" />
'<SolidColorBrush x : Key="Icarus_Green" Color="#40826d" />
'<SolidColorBrush x : Key="Icarus_Orange" Color="#C37636" />
'<SolidColorBrush x : Key="Icarus_Purple" Color="#990066" />
#End Region ' Colors
End Class
Public Class CenterToolTipConverter
Implements IMultiValueConverter
Public Function Convert(ByVal values As Object(), ByVal targetType As Type, ByVal parameter As Object, ByVal culture As CultureInfo) As Object Implements IMultiValueConverter.Convert
For Each value In values
If TypeOf (value) IsNot Double Then
Return Double.NaN
End If
Next
Dim dPlacementTarget As Double = CDbl(values(0))
Dim dToolTip As Double = CDbl(values(1))
Return (dPlacementTarget / 2.0) - (dToolTip / 2.0)
End Function
Public Function ConvertBack(ByVal value As Object, ByVal targetTypes As Type(), ByVal parameter As Object, ByVal culture As CultureInfo) As Object() Implements IMultiValueConverter.ConvertBack
Throw New NotSupportedException()
End Function
End Class
@@ -0,0 +1,711 @@
Imports System.IO
Imports System.Threading
Imports MS.Internal
Imports Effector.Plugin.StoneCut.ThreadData
Imports System.Windows.Threading
Public Class ExecProcessManager
Public Event m_AllArgsProcessed()
Public Enum ExecutionThreadStatuses As Integer
RUNNING = 1
STOPPED = 2
End Enum
Private Enum ProcessManagerStates
NULL = 0
OPEN = 1
CLOSE = 2
End Enum
Private m_ProcessManagerTimer As New DispatcherTimer
Private m_ProcessManagerState As ProcessManagerStates
Private m_ProcessManagerV As ProcessManagerV
Public ReadOnly Property ProcessManagerV As ProcessManagerV
Get
Return m_ProcessManagerV
End Get
End Property
' riferimento al thread principale
Private m_ExecutionThread As Thread
Private m_ExecutionThreadStatus As ExecutionThreadStatuses = ExecutionThreadStatuses.STOPPED
Public ReadOnly Property ExecutionThreadStatus As ExecutionThreadStatuses
Get
Return m_ExecutionThreadStatus
End Get
End Property
' array dei thread
Private m_ThreadList As Thread()
' array dei dati dei thread
Private m_ThreadDataList As ThreadData()
Friend ReadOnly Property ThreadDataList As ThreadData()
Get
Return m_ThreadDataList
End Get
End Property
' variabile che ferma i processi
Private m_bStopProcess As Boolean = False
' variabile che conferma chiusura dei processi
Private m_bExecutionThreadStoped As Boolean = False
' numero massimo di istanze del cam
Private m_MaxCamInstances As Integer = 1
' nome dell'eseguibile da lanciare
Private m_sProcessFileName As String = ""
' stringa di argomenti dell'eseguibile da lanciare
Private m_sProcessArguments As String = ""
' coda delle cose da eseguire
Private ArgumentsQueueLock As New Object
Private m_ArgumentsQueue As New Queue(Of ProcessArgs)
Public ReadOnly Property ArgumentsQueue As Queue(Of ProcessArgs)
Get
Return m_ArgumentsQueue
End Get
End Property
' coda dei risultati
Private ArgumentsResultQueueLock As New Object
Private m_ArgumentsResultQueue As New Queue(Of ProcessArgsResult)
Public ReadOnly Property ArgumentsResultQueue As Queue(Of ProcessArgsResult)
Get
Return m_ArgumentsResultQueue
End Get
End Property
' funzione che richiede prossimo elemento da processare
Private m_delGetNextProcessArgs As Func(Of ProcessArgs)
Public Sub SetGetNextProcessArgs(GetNextProcessArgs As Func(Of ProcessArgs))
m_delGetNextProcessArgs = GetNextProcessArgs
End Sub
' funzione di pre processing dell'elemento
Private m_delPreProcess As Func(Of ProcessArgs, ProcessArgs)
Public Sub SetPreProcess(PreProcess As Func(Of ProcessArgs, ProcessArgs))
m_delPreProcess = PreProcess
End Sub
' funzione di post processing dell'elemento
Private m_delPostProcess As Action(Of ProcessArgsResult)
Public Sub SetPostProcess(PostProcess As Action(Of ProcessArgsResult))
m_delPostProcess = PostProcess
End Sub
Sub New(sProcessFileName As String, sProcessArguments As String)
m_sProcessFileName = sProcessFileName
m_sProcessArguments = sProcessArguments
m_ProcessManagerTimer.Interval = New TimeSpan(0, 0, 1)
AddHandler m_ProcessManagerTimer.Tick, AddressOf ProcessManagerTimer_Tick
m_ProcessManagerTimer.Start()
End Sub
Private Sub ProcessManagerTimer_Tick(sender As Object, e As EventArgs)
Select Case m_ProcessManagerState
Case ProcessManagerStates.OPEN
' creo finestra statistiche processi
m_ProcessManagerV = New ProcessManagerV(Application.Current.MainWindow, New ProcessManagerVM(Me))
ProcessManagerV.Show()
m_ProcessManagerState = ProcessManagerStates.NULL
Case ProcessManagerStates.CLOSE
' chiudo finestra statistiche processi
If Not IsNothing(m_ProcessManagerV) Then
ProcessManagerV.Close()
m_ProcessManagerV = Nothing
End If
m_ProcessManagerState = ProcessManagerStates.NULL
End Select
End Sub
Public Function ArgumentsEnqueue(ProcessArgs As ProcessArgs) As Boolean
If ProcessArgs.nId <= 0 OrElse String.IsNullOrWhiteSpace(ProcessArgs.sArgs) Then Return False
SyncLock ArgumentsQueueLock
m_ArgumentsQueue.Enqueue(ProcessArgs)
End SyncLock
Return True
End Function
Public Function ArgumentsDequeue() As ProcessArgs
Dim DequeueProcessArgs As ProcessArgs = Nothing
SyncLock ArgumentsQueueLock
If m_ArgumentsQueue.Count > 0 Then
DequeueProcessArgs = m_ArgumentsQueue.Dequeue()
End If
End SyncLock
Return DequeueProcessArgs
End Function
Public Function ArgumentsQueueCount() As Integer
Dim nCount As Integer = 0
SyncLock ArgumentsQueueLock
nCount = m_ArgumentsQueue.Count
End SyncLock
Return nCount
End Function
Public Function ArgumentsResultEnqueue(ProcessArgsResult As ProcessArgsResult) As Boolean
SyncLock ArgumentsResultQueueLock
m_ArgumentsResultQueue.Enqueue(ProcessArgsResult)
End SyncLock
Return True
End Function
Public Function ArgumentsResultDequeue() As ProcessArgsResult
Dim DequeueProcessArgsResult As ProcessArgsResult = Nothing
SyncLock ArgumentsResultQueueLock
If m_ArgumentsResultQueue.Count > 0 Then
DequeueProcessArgsResult = m_ArgumentsResultQueue.Dequeue()
End If
End SyncLock
Return DequeueProcessArgsResult
End Function
Public Function ArgumentsResultQueueCount() As Integer
Dim nCount As Integer = 0
SyncLock ArgumentsResultQueueLock
nCount = m_ArgumentsResultQueue.Count
End SyncLock
Return nCount
End Function
Public Sub SetMaxCamInstances(nValue As Integer)
' Numero di core logici da utilizzare (minimo tra presenti sul PC e imposti da INI)
Dim nMaxThread As Integer = Math.Min(Environment.ProcessorCount, nValue)
m_MaxCamInstances = nMaxThread
End Sub
' funzione che avvia thread principale
Public Sub StartExecutionThread()
If m_ExecutionThreadStatus = ExecutionThreadStatuses.RUNNING Then Return
m_bStopProcess = False
m_bExecutionThreadStoped = False
m_ExecutionThread = New Thread(Sub()
ExecutionProcess()
End Sub)
m_ExecutionThread.SetApartmentState(ApartmentState.STA)
' avvio thread di gestione della macchina che avvia la connessione
m_ExecutionThread.Start()
m_ExecutionThreadStatus = ExecutionThreadStatuses.RUNNING
' lancio apertura finestra statistiche processi
m_ProcessManagerState = ProcessManagerStates.OPEN
End Sub
Public Sub StopExecutionThread()
If m_ExecutionThreadStatus = ExecutionThreadStatuses.STOPPED Then Return
m_bStopProcess = True
While Not m_bExecutionThreadStoped
Thread.Sleep(100)
End While
If Not IsNothing(m_ExecutionThread) Then
m_ExecutionThread.Abort()
While Not m_ExecutionThread.ThreadState = ThreadState.Aborted
Thread.Sleep(100)
End While
m_ExecutionThread = Nothing
End If
m_ThreadList = Nothing
m_ExecutionThreadStatus = ExecutionThreadStatuses.STOPPED
' lancio chiusura finestra statistiche processi
m_ProcessManagerState = ProcessManagerStates.CLOSE
End Sub
' funzione di esecuzione del thread principale che gestice i processi
Private Sub ExecutionProcess()
Dim bStopMainProcess As Boolean = False
Dim nStartingProc As Integer = 0
While Not bStopMainProcess
bStopMainProcess = m_bStopProcess
' se processo fermato, fermo i thread
If bStopMainProcess Then
If Not IsNothing(m_ThreadList) AndAlso m_ThreadList.Count > 0 AndAlso Not IsNothing(m_ThreadList(0)) Then
' li fermo
m_bStopProcess = True
' verifico siano terminati
Dim bOneNotEnded As Boolean = True
While bOneNotEnded
bOneNotEnded = False
For Each Thread In m_ThreadList
If Not IsNothing(Thread) Then
If Thread.IsAlive Then
bOneNotEnded = True
End If
End If
Next
End While
' pulisco la lista
For ThreadIndex = 0 To m_ThreadList.Count - 1
m_ThreadList(ThreadIndex) = Nothing
Next
m_bStopProcess = False
End If
m_bExecutionThreadStoped = True
Return
End If
' se lista processi nulla o vuota, li faccio partire
If (IsNothing(m_ThreadList) OrElse m_ThreadList.Count = 0) Then
m_ThreadList = New Thread(m_MaxCamInstances - 1) {}
m_ThreadDataList = New ThreadData(m_MaxCamInstances - 1) {}
For nThreadIndex = 0 To m_MaxCamInstances - 1
Dim ThreadId As Integer = nThreadIndex
m_ThreadList(nThreadIndex) = New Thread(Sub()
ThreadFunction(ThreadId)
End Sub)
m_ThreadList(nThreadIndex).SetApartmentState(ApartmentState.STA)
' avvio thread di gestione della macchina che avvia la connessione
m_ThreadList(nThreadIndex).Start()
Thread.Sleep(100)
Next
End If
' se qualche processo in stop, lo faccio ripartire
For ThreadIndex = 0 To m_ThreadList.Count - 1
If ThreadIndex < m_ThreadList.Count Then
Dim Thread = m_ThreadList(ThreadIndex)
If Not IsNothing(Thread) Then
If Thread.ThreadState = ThreadState.Stopped OrElse
Thread.ThreadState = ThreadState.Aborted OrElse
Thread.ThreadState = ThreadState.Suspended OrElse
(Not m_ThreadDataList(ThreadIndex).ProcessStatus = ProcessStatuses.TOBESTARTED AndAlso
(IsNothing(m_ThreadDataList(ThreadIndex).Process) OrElse
(Not IsNothing(m_ThreadDataList(ThreadIndex).Process) AndAlso m_ThreadDataList(ThreadIndex).Process.HasExited))) Then
' inserire un ritardo di rilancio?
' lo chiudo e rilancio
'Thread.Sleep(500)
Thread.Abort()
Thread.Sleep(100)
While Not Thread.ThreadState = ThreadState.Aborted
Thread.Sleep(100)
End While
Thread = Nothing
Dim ThreadId As Integer = ThreadIndex
m_ThreadList(ThreadIndex) = New Thread(Sub()
ThreadFunction(ThreadId)
End Sub)
m_ThreadList(ThreadIndex).SetApartmentState(ApartmentState.STA)
' avvio thread di gestione della macchina che avvia la connessione
m_ThreadList(ThreadIndex).Start()
End If
Else
Dim ThreadId As Integer = ThreadIndex
If ThreadIndex < m_ThreadList.Count Then
m_ThreadList(ThreadIndex) = New Thread(Sub()
ThreadFunction(ThreadId)
End Sub)
m_ThreadList(ThreadIndex).SetApartmentState(ApartmentState.STA)
' avvio thread di gestione della macchina che avvia la connessione
m_ThreadList(ThreadIndex).Start()
End If
End If
End If
Next
' verifico se coda vuota e tutti i processi hanno finito
Dim nQueueArgs As Integer = 0
SyncLock ArgumentsQueueLock
nQueueArgs = m_ArgumentsQueue.Count
End SyncLock
If nQueueArgs = 0 Then
Dim bProcessWaiting As Boolean = False
For Each ThreadData In m_ThreadDataList
If ThreadData.ProcessStatus = ProcessStatuses.WAITINGANSWER OrElse ThreadData.ProcessStatus = ProcessStatuses.ANSWERRECEIVED Then
bProcessWaiting = True
Exit For
End If
Next
If Not bProcessWaiting Then
' creo thread per lanciare evento asincrono di fine calcolo
Dim AllArgsProcessedThread = New Thread(Sub()
RaiseEvent m_AllArgsProcessed()
End Sub)
AllArgsProcessedThread.SetApartmentState(ApartmentState.STA)
AllArgsProcessedThread.Start()
End If
End If
Thread.Sleep(1000)
End While
End Sub
' funzione di esecuzione del singolo processo che comunica con il programma
Private Sub ThreadFunction(ThreadIndex As Integer)
Dim MyThreadData As New ThreadData
m_ThreadDataList(ThreadIndex) = MyThreadData
'Dim CurrThreadStat As New ThreadStat(ThreadIndex, DateTime.Now)
'HistoryThreadDataList.Add(CurrThreadStat)
'MyThreadData.SetThreadStat(CurrThreadStat)
'Dim sDrive As String = "c" ' If(ThreadIndex Mod 2 = 0, "A", "B")
'Dim sCurrDdfDir As String = sDrive & ":\EgtData\WebDoor\Ddf"
'Dim stopWatch As New Stopwatch()
'Dim lExeTime As Long = 0
'Dim lOtherTime As Long = 0
' avvio processo
Dim Proc As Process = New Process()
Proc.StartInfo.FileName = m_sProcessFileName
Proc.StartInfo.RedirectStandardInput = True
Proc.StartInfo.RedirectStandardOutput = True
Proc.StartInfo.Arguments = ThreadIndex.ToString() & " " & m_sProcessArguments
Proc.StartInfo.UseShellExecute = False
Proc.StartInfo.CreateNoWindow = True
AddHandler Proc.OutputDataReceived, AddressOf Thread_OutputDataReceived
If Proc.Start() Then
'Dim CurrPocStat As New ProcStat(DateTime.Now)
'CurrThreadStat.ProcExecutionList.Add(CurrPocStat)
Proc.BeginOutputReadLine()
MyThreadData.SetProcess(Proc)
MyThreadData.SetProcessStatus(ProcessStatuses.NULL)
'Dim nProc0Wait As Integer = 0
' ciclo per leggere coda ed eseguire
While Not m_bStopProcess AndAlso Not Proc.HasExited
Select Case MyThreadData.ProcessStatus
Case ThreadData.ProcessStatuses.NULL
'MyThreadData.SetThreadOperation(ThreadOperations.WaitingData)
' se c'e' qualcosa da processare
'Dim nNumTaskToProcess As Integer = 0
'If ThreadIndex = 0 Then
' nNumTaskToProcess = currWDC.numTask2proc
' If nNumTaskToProcess > 0 Then
' If Not m_bCheckOrder Then m_bCheckOrder = True
' Else
' If m_bCheckOrder Then m_bCheckOrder = False
' Thread.Sleep(100)
' End If
'ElseIf m_bCheckOrder Then
' nNumTaskToProcess = currWDC.numTask2proc
' If nNumTaskToProcess = 0 Then
' m_bCheckOrder = False
' End If
'End If
Dim NextProcessArgs As ProcessArgs = Nothing
If Not IsNothing(m_delGetNextProcessArgs) Then
NextProcessArgs = m_delGetNextProcessArgs()
Else
NextProcessArgs = ArgumentsDequeue()
End If
If Not IsNothing(NextProcessArgs) AndAlso NextProcessArgs.nId > 0 AndAlso Not String.IsNullOrWhiteSpace(NextProcessArgs.sArgs) Then
If Not IsNothing(m_delPreProcess) Then
NextProcessArgs = m_delPreProcess(NextProcessArgs)
End If
MyThreadData.SetCurrRequest(NextProcessArgs)
Proc.StandardInput.WriteLine(ThreadIndex & "," & NextProcessArgs.sArgs)
MyThreadData.SetProcessStatus(ThreadData.ProcessStatuses.WAITINGANSWER)
End If
'If m_bCheckOrder Then
' Dim LastRequest As Dictionary(Of String, CalcReqtDTO) = currWDC.queueList(1)
' If LastRequest.Count > 0 Then
' MyThreadData.SetThreadOperation(ThreadOperations.FoundRequest)
' Dim ConvItem As KeyValuePair(Of String, String)
' ConvItem = New KeyValuePair(Of String, String)(LastRequest.First().Key, LastRequest.First().Value.DDF)
' MyThreadData.SetCurrRequest(ConvItem)
' ' vecchia versione
' 'MyThreadData.SetCurrRequest(LastRequest.First())
' Dim Item As KeyValuePair(Of String, String) = MyThreadData.CurrRequest
' Dim bOk As Boolean = Not IsNothing(Item)
' If bOk Then
' ' avvio cronometro
' 'stopWatch.Reset()
' stopWatch.Restart()
' ' svuoto vecchio set file della porta richiesta
' Dim fileList As String() = Directory.GetFiles(sCurrDdfDir, Item.Key + ".*")
' ' elimino vecchi
' If Not IsNothing(fileList) Then
' For Each sFile In fileList
' Try
' File.Delete(sFile)
' Catch ex As Exception
' End Try
' Next
' End If
' ' scrivo ddf
' MyThreadData.SetThreadOperation(ThreadOperations.WritingDdf)
' MyThreadData.SetDdfPath(sCurrDdfDir & "\" & Item.Key & ".ddf")
' Dim sDdfPath As String = MyThreadData.sDdfPath
' Try
' File.WriteAllText(sDdfPath, Item.Value)
' Catch ex As Exception
' bOk = False
' End Try
' If bOk Then
' MyThreadData.SetThreadOperation(ThreadOperations.ProcessingDdf)
' Proc.StandardInput.WriteLine(ThreadIndex & "," & sDdfPath)
' MyThreadData.SetWaitProcAnswer(ThreadData.ProcComm.WaitingAnswer)
' End If
' End If
' Else
' Thread.Sleep(100)
' End If
'Else
' Thread.Sleep(100)
'End If
Case ThreadData.ProcessStatuses.WAITINGANSWER
Thread.Sleep(10)
Case ThreadData.ProcessStatuses.ANSWERRECEIVED
Dim NewProcessArgsResult As New ProcessArgsResult(MyThreadData.CurrRequest, MyThreadData.nProcResult)
If Not IsNothing(m_delPostProcess) Then
m_delPostProcess(NewProcessArgsResult)
End If
ArgumentsResultEnqueue(NewProcessArgsResult)
'Dim Item As ProcessArgs = MyThreadData.CurrRequest
'Dim sDdfPath As String = MyThreadData.sDdfPath
'Dim bOk As Boolean = True
'' salvo exe time...
'stopWatch.Stop()
'lExeTime = stopWatch.ElapsedMilliseconds
'stopWatch.Restart()
'Dim procResults As New List(Of CalcResultDTO)
'Dim currRes As New CalcResultDTO
'Dim fContent As String = ""
'MyThreadData.SetThreadOperation(ThreadOperations.ReadingSvg)
'' verifico esistenza file svg e lo carico
'bOk = GetFileContent(Path.ChangeExtension(sDdfPath, "svg"), fContent)
'' !!! ToDo: inserire TIPO di richiesta secondo quanto ricevuto....
'' invio risposta
'currRes.Validated = MyThreadData.nProcResult = 0 AndAlso bOk
'currRes.DoorIdVers = Item.Key
'' per ora cablato a svg, prendere da MimeType richiesta...
'currRes.MimeType = "svg"
'' se NON fosse validato --> messo il messaggio...
'If (currRes.Validated) Then
' currRes.RawContent = fContent
'Else
' bOk = GetFileContent(Path.ChangeExtension(sDdfPath, "txt"), fContent)
' currRes.ErrorMsg = fContent
'End If
'MyThreadData.SetThreadOperation(ThreadOperations.SendResult)
'procResults.Add(currRes)
'Dim respPut As String = currWDC.SendProcResults(procResults)
'stopWatch.Stop()
'lOtherTime = stopWatch.ElapsedMilliseconds
'CurrPocStat.IncrementDoneRequest()
'' aggiorno thread display...
'UpdateThreadList(Item.Key, lExeTime, lOtherTime)
'' cambio nomi file generati in old
'Dim OldSvg As String = Path.ChangeExtension(sDdfPath, "svg")
'Dim NewSvg As String = Path.GetDirectoryName(sDdfPath) & "\" & Path.GetFileNameWithoutExtension(sDdfPath) & "_old.svg"
'Try
' File.Delete(NewSvg)
'Catch ex As Exception
'End Try
'Try
' File.Delete(Path.ChangeExtension(NewSvg, "txt"))
'Catch ex As Exception
'End Try
'Try
' File.Delete(Path.ChangeExtension(NewSvg, "log"))
'Catch ex As Exception
'End Try
'Try
' File.Delete(Path.ChangeExtension(NewSvg, "nge"))
'Catch ex As Exception
'End Try
'Try
' File.Delete(Path.ChangeExtension(NewSvg, "ddf"))
'Catch ex As Exception
'End Try
'Try
' File.Move(OldSvg, NewSvg)
'Catch ex As Exception
'End Try
'Try
' File.Move(Path.ChangeExtension(OldSvg, "txt"), Path.ChangeExtension(NewSvg, "txt"))
'Catch ex As Exception
'End Try
'Try
' File.Move(Path.ChangeExtension(OldSvg, "log"), Path.ChangeExtension(NewSvg, "log"))
'Catch ex As Exception
'End Try
'Try
' File.Move(Path.ChangeExtension(OldSvg, "nge"), Path.ChangeExtension(NewSvg, "nge"))
'Catch ex As Exception
'End Try
'Try
' File.Move(Path.ChangeExtension(OldSvg, "ddf"), Path.ChangeExtension(NewSvg, "ddf"))
'Catch ex As Exception
'End Try
MyThreadData.SetProcessStatus(ThreadData.ProcessStatuses.NULL)
End Select
End While
' CurrPocStat.SetStopProc(DateTime.Now)
If m_bStopProcess Then
Proc.StandardInput.WriteLine("quit")
End If
End If
' CurrThreadStat.SetStopThread(DateTime.Now)
MyThreadData.SetProcess(Nothing)
' MyThreadData.SetThreadOperation(ThreadOperations.Closed)
End Sub
Private Sub Thread_OutputDataReceived(sender As Object, e As DataReceivedEventArgs)
Dim sResult As String = e.Data
If Not String.IsNullOrWhiteSpace(sResult) AndAlso sResult.StartsWith("#42315#,") Then
Dim Results() As String = sResult.Split(","c)
If Results.Count >= 2 Then
Dim nIndex As Integer = -1
Dim nResult As Integer = -1
Dim dResult As Integer = -1
If Integer.TryParse(Results(1), nIndex) AndAlso nIndex >= 0 Then
If Integer.TryParse(Results(2), nResult) AndAlso nResult >= 0 Then
m_ThreadDataList(nIndex).SetProcResult(nResult)
ElseIf StringToDouble(Results(2), dResult) AndAlso dResult >= 0 Then
nResult = Math.Floor(dResult)
m_ThreadDataList(nIndex).SetProcResult(nResult)
End If
m_ThreadDataList(nIndex).SetProcessStatus(ThreadData.ProcessStatuses.ANSWERRECEIVED)
End If
End If
End If
End Sub
End Class
Public Class ThreadData
'Enum ThreadOperations As Integer
' WaitingData = 1
' FoundRequest = 2
' WritingDdf = 3
' ProcessingDdf = 4
' ReadingSvg = 5
' SendResult = 6
' Closed = 10
'End Enum
Public Enum ProcessStatuses As Integer
NULL = 0
WAITINGANSWER = 1
ANSWERRECEIVED = 2
TOBESTARTED = 10
End Enum
Private m_ProcessStatus As ProcessStatuses = ProcessStatuses.TOBESTARTED
Public ReadOnly Property ProcessStatus As ProcessStatuses
Get
Return m_ProcessStatus
End Get
End Property
Friend Sub SetProcessStatus(value As ProcessStatuses)
m_ProcessStatus = value
End Sub
Private m_CurrRequest As ProcessArgs
Public ReadOnly Property CurrRequest As ProcessArgs
Get
Return m_CurrRequest
End Get
End Property
Friend Sub SetCurrRequest(value As ProcessArgs)
m_CurrRequest = value
End Sub
'Private m_sDdfPath As String
'Public ReadOnly Property sDdfPath As String
' Get
' Return m_sDdfPath
' End Get
'End Property
'Friend Sub SetDdfPath(value As String)
' m_sDdfPath = value
'End Sub
Private m_nProcResult As Integer
Public ReadOnly Property nProcResult As Integer
Get
Return m_nProcResult
End Get
End Property
Friend Sub SetProcResult(value As Integer)
m_nProcResult = value
End Sub
'Private m_ThreadOperation As ThreadOperations
'Public ReadOnly Property ThreadOperation As ThreadOperations
' Get
' Return m_ThreadOperation
' End Get
'End Property
'Friend Sub SetThreadOperation(value As ThreadOperations)
' m_ThreadOperation = value
'End Sub
Private m_Process As Process
Public ReadOnly Property Process As Process
Get
Return m_Process
End Get
End Property
Friend Sub SetProcess(value As Process)
m_Process = value
End Sub
'Private m_ThreadStat As ThreadStat
'Public ReadOnly Property ThreadStat As ThreadStat
' Get
' Return m_ThreadStat
' End Get
'End Property
'Friend Sub SetThreadStat(value As ThreadStat)
' m_ThreadStat = value
'End Sub
End Class
Public Class ProcessArgs
Private m_nId As Integer
Public ReadOnly Property nId As Integer
Get
Return m_nId
End Get
End Property
Private m_sArgs As String
Public ReadOnly Property sArgs As String
Get
Return m_sArgs
End Get
End Property
Sub New(nId As Integer, sArgs As String)
m_nId = nId
m_sArgs = sArgs
End Sub
End Class
Public Class ProcessArgsResult
Private m_ProcessArgs As ProcessArgs
Public ReadOnly Property ProcessArgs As ProcessArgs
Get
Return m_ProcessArgs
End Get
End Property
Private m_nResult As Integer
Public ReadOnly Property nResult As Integer
Get
Return m_nResult
End Get
End Property
Public Sub SetResult(nResult As Integer)
m_nResult = nResult
End Sub
Sub New(ProcessArgs As ProcessArgs, nResult As Integer)
m_ProcessArgs = ProcessArgs
m_nResult = nResult
End Sub
End Class
@@ -0,0 +1,76 @@
Imports System.Globalization
Imports System.Runtime.InteropServices
Imports System.Text
Public Module GenInterface
'-------------------------------- IniFile : Get --------------------------------------------------
<DllImport("kernel32.dll", CharSet:=CharSet.Unicode)>
Public Function GetPrivateProfileInt(
lpAppName As String,
lpKeyName As String,
nDefault As Integer,
lpFileName As String) As Integer
End Function
Public Function GetPrivateProfileDouble(
lpAppName As String,
lpKeyName As String,
dDefault As Double,
lpFileName As String) As Double
Dim sValue As String = String.Empty
GetPrivateProfileString(lpAppName, lpKeyName, dDefault.ToString(), sValue, lpFileName)
Dim nPos As Integer = sValue.IndexOf(";")
If nPos >= 0 Then
sValue = sValue.Remove(nPos)
End If
Dim dValue As Double
If Not Double.TryParse(sValue, NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, dValue) Then
dValue = dDefault
End If
Return dValue
End Function
<DllImport("kernel32.dll", CharSet:=CharSet.Unicode)>
Private Function GetPrivateProfileString(
lpAppName As String,
lpKeyName As String,
lpDefault As String,
lpReturnedString As StringBuilder,
nSize As Integer,
lpFileName As String) As Integer
End Function
Public Function GetPrivateProfileString(
lpAppName As String,
lpKeyName As String,
lpDefault As String,
ByRef lpString As String,
lpFileName As String) As Integer
Dim sb As New StringBuilder(1024)
Dim nRet As Integer = GetPrivateProfileString(lpAppName, lpKeyName, lpDefault, sb, sb.Capacity, lpFileName)
lpString = sb.ToString
Return nRet
End Function
'-------------------------------- IniFile : Write ------------------------------------------------
<DllImport("kernel32.dll", CharSet:=CharSet.Unicode)>
Public Function WritePrivateProfileString(
lpAppName As String,
lpKeyName As String,
lpString As String,
lpFileName As String) As Boolean
End Function
'-------------------------------- Windows --------------------------------------------------------
Public Enum SW As Integer
HIDE = 0
SHOWMAXIMIZED = 3
RESTORE = 9
End Enum
<DllImport("user32.dll")>
Public Function ShowWindow(hWnd As IntPtr, nCmdShow As Integer) As Boolean
End Function
End Module
@@ -0,0 +1,97 @@
Imports System.Collections.ObjectModel
Public Structure IdNameStruct
Private m_Id As Integer
Public Property Id As Integer
Get
Return m_Id
End Get
Set(value As Integer)
m_Id = value
End Set
End Property
Private m_Name As String
Public Property Name As String
Get
Return m_Name
End Get
Set(value As String)
m_Name = value
End Set
End Property
Sub New(Id As Integer, Name As String)
m_Id = Id
m_Name = Name
End Sub
Public Overrides Function ToString() As String
Return Name
End Function
Public Shared Function IndFromId(Id As Integer, List As ObservableCollection(Of IdNameStruct)) As Integer
For i = 0 To List.Count - 1
If List(i).Id = Id Then Return i
Next
Return 0
End Function
Public Shared Function IndFromId(Id As Integer, List As List(Of IdNameStruct)) As Integer
For i = 0 To List.Count - 1
If List(i).Id = Id Then Return i
Next
Return 0
End Function
Public Shared Function IdFromInd(Ind As Integer, List As ObservableCollection(Of IdNameStruct)) As Integer
Return List(Ind).Id
End Function
Public Shared Function IdFromInd(Ind As Integer, List As List(Of IdNameStruct)) As Integer
Return List(Ind).Id
End Function
Public Shared Function IndFromId(Id As Integer, List As ObservableCollection(Of Object)) As Integer
For i = 0 To List.Count - 1
If TypeOf (List(i)) Is IdNameStruct AndAlso DirectCast(List(i), IdNameStruct).Id = Id Then
Return i
End If
Next
Return 0
End Function
Public Shared Function IndFromId(Id As Integer, List As List(Of Object)) As Integer
For i = 0 To List.Count - 1
If TypeOf (List(i)) Is IdNameStruct AndAlso DirectCast(List(i), IdNameStruct).Id = Id Then
Return i
End If
Next
Return 0
End Function
Public Shared Function IdFromInd(Ind As Integer, List As ObservableCollection(Of Object)) As Integer
If TypeOf (List(Ind)) Is IdNameStruct Then
Return DirectCast(List(Ind), IdNameStruct).Id
End If
Return 0
End Function
Public Shared Function IdFromInd(Ind As Integer, List As List(Of Object)) As Integer
If TypeOf (List(Ind)) Is IdNameStruct Then
Return DirectCast(List(Ind), IdNameStruct).Id
End If
Return 0
End Function
Public Shared Function IdFromName(Name As String, List As ObservableCollection(Of Object)) As Integer
For i = 0 To List.Count - 1
If DirectCast(List(i), IdNameStruct).Name = Name Then Return DirectCast(List(i), IdNameStruct).Id
Next
Return 0
End Function
Public Shared Function IdFromName(Name As String, List As List(Of Object)) As Integer
For i = 0 To List.Count - 1
If DirectCast(List(i), IdNameStruct).Name = Name Then Return DirectCast(List(i), IdNameStruct).Id
Next
Return 0
End Function
End Structure
@@ -0,0 +1,65 @@
'----------------------------------------------------------------------------
' EgalTech 2017-2017
'----------------------------------------------------------------------------
' File : IniFile.vb Data : 08.05.24 Versione : 2.6e1
' Contenuto : Modulo IniFile per gestione lettura/scrittura da file INI.
'
'
'
' Modifiche : 08.05.24 ES Creazione modulo.
'
'
'----------------------------------------------------------------------------
Imports System.Collections.ObjectModel
Public Module IniFile
Private m_sPath As String
Public ReadOnly Property sPath As String
Get
Return m_sPath
End Get
End Property
Friend Sub SetIniFile(sPath)
m_sPath = sPath
End Sub
Public Function GetPluginPrivateProfileInt(IpAppName As String, IpKeyName As String, nDefault As Integer) As Integer
Return GetPrivateProfileInt(IpAppName, IpKeyName, nDefault, m_sPath)
End Function
Public Function GetPluginPrivateProfileDouble(IpAppName As String, IpKeyName As String, dDefault As Double) As Double
Return GetPrivateProfileDouble(IpAppName, IpKeyName, dDefault, m_sPath)
End Function
Public Function GetPluginPrivateProfileString(IpAppName As String, IpKeyName As String, IpDefault As String, ByRef IpString As String) As Integer
Return GetPrivateProfileString(IpAppName, IpKeyName, IpDefault, IpString, m_sPath)
End Function
'Public Function GetPrivateProfileLanguage(lpAppName As String, lpKeyName As String, lpFileName As String) As Language
' Dim sVal As String = String.Empty
' GetPrivateProfileString(lpAppName, lpKeyName, "", sVal, lpFileName)
' Dim sItems() As String = sVal.Split(",".ToCharArray)
' If sItems.Count() = 2 Then
' Return New Language(sItems(0), sItems(1))
' End If
' Return Nothing
'End Function
'Public Function GetMainPrivateProfileLanguage(lpAppName As String, lpKeyName As String) As Language
' Dim sVal As String = String.Empty
' GetMainPrivateProfileString(lpAppName, lpKeyName, "", sVal)
' Dim sItems() As String = sVal.Split(",".ToCharArray)
' If sItems.Count() = 2 Then
' Return New Language(sItems(0), sItems(1))
' End If
' Return Nothing
'End Function
Public Function WritePluginPrivateProfileString(IpAppName As String, IpKeyName As String, ByRef IpString As String) As Boolean
Return WritePrivateProfileString(IpAppName, IpKeyName, IpString, m_sPath)
End Function
End Module
@@ -0,0 +1,308 @@
Imports System.Globalization
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Converters
Imports Effector.Plugin.StoneCut.Door
Imports Effector.Plugin.Lib
Public Class JsonDoor
Private m_nListIndex As Integer
Public ReadOnly Property nListIndex As Integer
Get
Return m_nListIndex
End Get
End Property
Private m_nId As Integer
Public ReadOnly Property nId As Integer
Get
Return m_nId
End Get
End Property
Private m_nTable As Integer
Public ReadOnly Property nTable As Integer
Get
Return m_nTable
End Get
End Property
Private m_sFileName As String
Public Property sFileName As String
Get
Return m_sFileName
End Get
Set(value As String)
m_sFileName = value
End Set
End Property
Private m_dFileDimension As Double
Public Property dFileDimension As Double
Get
Return m_dFileDimension
End Get
Set(value As Double)
m_dFileDimension = value
End Set
End Property
Private m_nState As PartProgramStates = PartProgramStates.NULL
<JsonProperty>
<JsonConverter(GetType(StringEnumConverter))>
Public ReadOnly Property nState As PartProgramStates
Get
Return m_nState
End Get
End Property
#Region "Statistics"
Private m_dtMachiningStart As DateTime = DateTime.MinValue
Public ReadOnly Property dtMachiningStart As DateTime
Get
Return m_dtMachiningStart
End Get
End Property
Private m_dtMachiningEnd As DateTime = DateTime.MinValue
Public ReadOnly Property dtMachiningEnd As DateTime
Get
Return m_dtMachiningEnd
End Get
End Property
#End Region ' Statistics
<JsonConstructor>
Sub New(nId As Integer, sFileName As String, nTable As Integer, dFileDimension As Double)
m_nId = nId
m_sFileName = sFileName
m_nTable = nTable
m_dFileDimension = dFileDimension
End Sub
Sub New(nListIndex As Integer, Door As Door)
m_nListIndex = nListIndex
m_nId = Door.nId
m_sFileName = Door.sFileName
m_nTable = Door.nTable
m_dFileDimension = Door.dFileDimension
End Sub
End Class
Public Class JsonLuaDoor
Inherits VMBase
Private m_nId As Integer = -1
Public ReadOnly Property nId As Integer
Get
Return m_nId
End Get
End Property
Private m_nCircIndex As Integer = -1
Public ReadOnly Property nCircIndex As Integer
Get
Return m_nCircIndex
End Get
End Property
Private m_nState As Integer = 0
Public ReadOnly Property nState As Integer
Get
Return m_nState
End Get
End Property
Private m_DoorStateList As New List(Of IdNameStruct)({New IdNameStruct(0, "Not On Machine"),
New IdNameStruct(1, "Imported"),
New IdNameStruct(2, "On Load"),
New IdNameStruct(3, "On Machine 1"),
New IdNameStruct(4, "On Medium Station"),
New IdNameStruct(6, "On Machine 2"),
New IdNameStruct(7, "On Unload"),
New IdNameStruct(8, "Produced"),
New IdNameStruct(100, "Scrap")})
Public ReadOnly Property DoorStateList As List(Of IdNameStruct)
Get
Return m_DoorStateList
End Get
End Property
Private m_SelDoorState As IdNameStruct
Public Property SelDoorState As IdNameStruct
Get
Return m_SelDoorState
End Get
Set(value As IdNameStruct)
m_SelDoorState = value
End Set
End Property
Private m_sDoorCode As String = ""
Public ReadOnly Property sDoorCode As String
Get
Return m_sDoorCode
End Get
End Property
Private m_sDoorDescription As String = ""
Public ReadOnly Property sDoorDescription As String
Get
Return m_sDoorDescription
End Get
End Property
Private m_sDDFName As String = ""
Public ReadOnly Property sDDFName As String
Get
Return m_sDDFName
End Get
End Property
Private m_sCSVName As String = ""
Public ReadOnly Property sCSVName As String
Get
Return m_sCSVName
End Get
End Property
Private m_sM1CNPath As String = ""
Public ReadOnly Property sM1CNPath As String
Get
Return m_sM1CNPath
End Get
End Property
Private m_sM2CNPath As String = ""
Public ReadOnly Property sM2CNPath As String
Get
Return m_sM2CNPath
End Get
End Property
Private m_dtLoadTime As DateTime
Public ReadOnly Property sLoadTime As String
Get
Return m_dtLoadTime.ToString("yy/MM/dd HH:mm:ss")
End Get
End Property
Public ReadOnly Property dtLoadTime As DateTime
Get
Return m_dtLoadTime
End Get
End Property
Private m_dtMachining1Start As DateTime
Public ReadOnly Property sMachining1Start As String
Get
Return m_dtMachining1Start.ToString("yy/MM/dd HH:mm:ss")
End Get
End Property
Public ReadOnly Property dtMachining1Start As DateTime
Get
Return m_dtMachining1Start
End Get
End Property
Private m_dtMachining1End As DateTime
Public ReadOnly Property sMachining1End As String
Get
Return m_dtMachining1End.ToString("yy/MM/dd HH:mm:ss")
End Get
End Property
Public ReadOnly Property dtMachining1End As DateTime
Get
Return m_dtMachining1End
End Get
End Property
Private m_dtMachining2Start As DateTime
Public ReadOnly Property sMachining2Start As String
Get
Return m_dtMachining2Start.ToString("yy/MM/dd HH:mm:ss")
End Get
End Property
Public ReadOnly Property dtMachining2Start As DateTime
Get
Return m_dtMachining2Start
End Get
End Property
Private m_dtMachining2End As DateTime
Public ReadOnly Property sMachining2End As String
Get
Return m_dtMachining2End.ToString("yy/MM/dd HH:mm:ss")
End Get
End Property
Public ReadOnly Property dtMachining2End As DateTime
Get
Return m_dtMachining2End
End Get
End Property
Private m_dtUnloadTime As DateTime
Public ReadOnly Property sUnloadTime As String
Get
Return m_dtUnloadTime.ToString("yy/MM/dd HH:mm:ss")
End Get
End Property
Public ReadOnly Property dtUnloadTime As DateTime
Get
Return m_dtUnloadTime
End Get
End Property
<JsonConstructor>
Sub New(nId As Integer, nCircIndex As Integer, nState As Integer, sDoorCode As String, sDoorDescription As String, sDDFName As String, sCSVName As String,
sM1CNPath As String, sM2CNPath As String, nLoadTime As Long, nMachining1Start As Long, nMachining1End As Long, nMachining2Start As Long,
nMachining2End As Long, nUnloadTime As Long)
m_nId = nId
m_nCircIndex = nCircIndex
m_nState = nState
m_sDoorCode = sDoorCode
m_sDoorDescription = sDoorDescription
m_sDDFName = sDDFName
m_sCSVName = sCSVName
m_sM1CNPath = sM1CNPath
m_sM2CNPath = sM2CNPath
m_dtLoadTime = New DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(nLoadTime).ToLocalTime()
m_dtMachining1Start = New DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(nMachining1Start).ToLocalTime()
m_dtMachining1End = New DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(nMachining1End).ToLocalTime()
m_dtMachining2Start = New DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(nMachining2Start).ToLocalTime()
m_dtMachining2End = New DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(nMachining2End).ToLocalTime()
m_dtUnloadTime = New DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(nUnloadTime).ToLocalTime()
End Sub
Sub New(Door As Door)
m_nId = Door.nId
m_nCircIndex = 0
m_nState = 0
m_sDDFName = Door.sFileName
'm_sCSVName = Door.sCSVName
m_sM1CNPath = ""
m_sM2CNPath = ""
m_dtLoadTime = DateTime.MinValue
m_dtMachining1Start = DateTime.MinValue
m_dtMachining1End = DateTime.MinValue
m_dtMachining2Start = DateTime.MinValue
m_dtMachining2End = DateTime.MinValue
m_dtUnloadTime = DateTime.MinValue
End Sub
Friend Sub Update(JsonLuaDoor As JsonLuaDoor)
m_nCircIndex = JsonLuaDoor.m_nCircIndex
m_nState = JsonLuaDoor.m_nState
m_sM1CNPath = JsonLuaDoor.m_sM1CNPath
m_sM2CNPath = JsonLuaDoor.m_sM2CNPath
m_dtLoadTime = JsonLuaDoor.m_dtLoadTime
m_dtMachining1Start = JsonLuaDoor.m_dtMachining1Start
m_dtMachining1End = JsonLuaDoor.m_dtMachining1End
m_dtMachining2Start = JsonLuaDoor.m_dtMachining2Start
m_dtMachining2End = JsonLuaDoor.m_dtMachining2End
m_dtUnloadTime = JsonLuaDoor.m_dtUnloadTime
End Sub
End Class
+473
View File
@@ -0,0 +1,473 @@
Imports Effector.Plugin.Interface
Module Map
Private m_refFiveLakesUIVM As FiveLakesUIVM
Private m_refDoorListPageVM As DoorListPageVM
Private m_refMachinePageVM As MachinePageVM
Private m_refSupervisorFunction As IHost
'Private m_refMyStatusBarVM As MyStatusBarVM
'Private m_refProjManagerVM As ProjManagerVM
'Private m_refProjectVM As ProjectVM
'Private m_refSecondaryWindowVM As SecondaryWindowVM
'Private m_refSecondaryWindowV As SecondaryWindowV
'Private m_refMachinePanelVM As MachinePanelVM
'Private m_refLeftPanelVM As LeftPanelVM
'Private m_refRightPanelVM As RightPanelVM
'Private m_refDispositionPanelVM As DispositionPanelVM
'Private m_refStartMachPanelVM As StartMachPanelVM
'Private m_refRibPanelVM As RibPanelVM
'Private m_refControllerInputPanelVM As ControllerInputPanelVM
'Private m_refInstrumentPanelVM As InstrumentPanelVM
'Private m_refTopPanelVM As TopPanelVM
'Private m_refSliceManagerVM As SliceManagerVM
'Private m_refTFSEditorVM As TFSEditorVM
'Private m_refCurrMachiningPanelVM As CurrMachiningPanelVM
'Private m_refMachiningDbVM As MachiningDbVM
'Private m_refMaterialDbVM As MaterialDbVM
'Private m_refSliderManagerVM As SliderManagerVM
'Private m_refRibParamPanelVM As RibParamPanelVM
'Private m_refSimulationPanelVM As SimulationPanelVM
'Private m_refReferencePanelVM As ReferencePanelVM
'Private m_refViewLayerManagerVM As ViewLayerManagerVM
'Private m_refShellNumberPanelVM As ShellNumberPanelVM
'Private m_refShellNumberParamPanelVM As ShellNumberParamPanelVM
'Private m_refFilledSolidPanelVM As FilledSolidPanelVM
'Private m_refFilledSolidParamPanelVM As FilledSolidParamPanelVM
'Private m_refSplashScreen As SplashScreen
'Private m_refManagePartPanelVM As ManagePartPanelVM
'Private m_refMachineViewPanelVM As MachineViewPanelVM
'Private m_refImportLoadingWndVM As ImportLoadingWndVM
#Region "Get"
Public ReadOnly Property refFiveLakesUIVM As FiveLakesUIVM
Get
Return m_refFiveLakesUIVM
End Get
End Property
Public ReadOnly Property refDoorListPageVM As DoorListPageVM
Get
Return m_refDoorListPageVM
End Get
End Property
Public ReadOnly Property refMachinePageVM As MachinePageVM
Get
Return m_refMachinePageVM
End Get
End Property
Public ReadOnly Property refSupervisorFunction As IHost
Get
Return m_refSupervisorFunction
End Get
End Property
'Public ReadOnly Property refMyStatusBarVM As MyStatusBarVM
' Get
' Return LibMap.refStatusBarVM
' End Get
'End Property
'Public ReadOnly Property refProjManagerVM As ProjManagerVM
' Get
' Return m_refProjManagerVM
' End Get
'End Property
'Public ReadOnly Property refProjectVM As ProjectVM
' Get
' Return m_refProjectVM
' End Get
'End Property
'Public ReadOnly Property refSceneHostVM As MySceneHostVM
' Get
' Return LibMap.refSceneHostVM
' End Get
'End Property
'Public ReadOnly Property refSecondaryWindowVM As SecondaryWindowVM
' Get
' Return m_refSecondaryWindowVM
' End Get
'End Property
'Public ReadOnly Property refSecondaryWindowV As SecondaryWindowV
' Get
' Return m_refSecondaryWindowV
' End Get
'End Property
'Public ReadOnly Property refShowPanelVM As ShowPanelVM
' Get
' Return LibMap.refShowPanelVM
' End Get
'End Property
'Public ReadOnly Property refMachinePanelVM As MachinePanelVM
' Get
' Return m_refMachinePanelVM
' End Get
'End Property
'Public ReadOnly Property refLeftPanelVM As LeftPanelVM
' Get
' Return m_refLeftPanelVM
' End Get
'End Property
'Public ReadOnly Property refRightPanelVM As RightPanelVM
' Get
' Return m_refRightPanelVM
' End Get
'End Property
'Public ReadOnly Property refDispositionPanelVM As DispositionPanelVM
' Get
' Return m_refDispositionPanelVM
' End Get
'End Property
'Public ReadOnly Property refStartMachPanelVM As StartMachPanelVM
' Get
' Return m_refStartMachPanelVM
' End Get
'End Property
'Public ReadOnly Property refRibPanelVM As RibPanelVM
' Get
' Return m_refRibPanelVM
' End Get
'End Property
'Public ReadOnly Property refControllerInputPanelVM As ControllerInputPanelVM
' Get
' Return m_refControllerInputPanelVM
' End Get
'End Property
'Public ReadOnly Property refInstrumentPanelVM As MyInstrumentPanelVM
' Get
' Return m_refInstrumentPanelVM
' End Get
'End Property
'Public ReadOnly Property refTopPanelVM As TopPanelVM
' Get
' Return m_refTopPanelVM
' End Get
'End Property
'Public ReadOnly Property refSliceManagerVM As SliceManagerVM
' Get
' Return m_refSliceManagerVM
' End Get
'End Property
'Public ReadOnly Property refTFSEditorVM As TFSEditorVM
' Get
' Return m_refTFSEditorVM
' End Get
'End Property
'Public ReadOnly Property refCurrMachiningPanelVM As CurrMachiningPanelVM
' Get
' Return m_refCurrMachiningPanelVM
' End Get
'End Property
'Public ReadOnly Property refMachiningDbVM As MachiningDbVM
' Get
' Return m_refMachiningDbVM
' End Get
'End Property
'Public ReadOnly Property refMaterialDbVM As MaterialDbVM
' Get
' Return m_refMaterialDbVM
' End Get
'End Property
'Public ReadOnly Property refSliderManagerVM As SliderManagerVM
' Get
' Return m_refSliderManagerVM
' End Get
'End Property
'Public ReadOnly Property refRibParamPanelVM As RibParamPanelVM
' Get
' Return m_refRibParamPanelVM
' End Get
'End Property
'Public ReadOnly Property refSimulationPanelVM As SimulationPanelVM
' Get
' Return m_refSimulationPanelVM
' End Get
'End Property
'Public ReadOnly Property refReferencePanelVM As ReferencePanelVM
' Get
' Return m_refReferencePanelVM
' End Get
'End Property
'Public ReadOnly Property refViewLayerManagerVM As ViewLayerManagerVM
' Get
' Return m_refViewLayerManagerVM
' End Get
'End Property
'Public ReadOnly Property refShellNumberPanelVM As ShellNumberPanelVM
' Get
' Return m_refShellNumberPanelVM
' End Get
'End Property
'Public ReadOnly Property refShellNumberParamPanelVM As ShellNumberParamPanelVM
' Get
' Return m_refShellNumberParamPanelVM
' End Get
'End Property
'Public ReadOnly Property refFilledSolidPanelVM As FilledSolidPanelVM
' Get
' Return m_refFilledSolidPanelVM
' End Get
'End Property
'Public ReadOnly Property refFilledSolidParamPanelVM As FilledSolidParamPanelVM
' Get
' Return m_refFilledSolidParamPanelVM
' End Get
'End Property
'Public ReadOnly Property refSplashScreen As SplashScreen
' Get
' Return m_refSplashScreen
' End Get
'End Property
'Public ReadOnly Property refManagePartPanelVM As ManagePartPanelVM
' Get
' Return m_refManagePartPanelVM
' End Get
'End Property
'Public ReadOnly Property refMachineViewPanelVM As MachineViewPanelVM
' Get
' Return m_refMachineViewPanelVM
' End Get
'End Property
'Public ReadOnly Property refImportLoadingWndVM As ImportLoadingWndVM
' Get
' Return m_refImportLoadingWndVM
' End Get
'End Property
#End Region ' Get
#Region "Set"
Friend Function SetRefSupervisorFunction(IHost As IHost) As Boolean
m_refSupervisorFunction = IHost
Return Not IsNothing(m_refSupervisorFunction)
End Function
Friend Function SetRefDoorListPageVM(DoorListPageVM As DoorListPageVM) As Boolean
m_refDoorListPageVM = DoorListPageVM
Return Not IsNothing(m_refDoorListPageVM)
End Function
Friend Function SetRefMachinePageVM(MachinePageVM As MachinePageVM) As Boolean
m_refMachinePageVM = MachinePageVM
Return Not IsNothing(m_refMachinePageVM)
End Function
' Friend Function SetRefProjManagerVM(ProjManagerVM As ProjManagerVM) As Boolean
' m_refProjManagerVM = ProjManagerVM
' Return Not IsNothing(m_refProjManagerVM)
' End Function
' Friend Function SetRefProjectVM(ProjectVM As ProjectVM) As Boolean
' m_refProjectVM = ProjectVM
' Return Not IsNothing(m_refProjectVM)
' End Function
' Friend Function SetRefSceneHostVM(SceneHostVM As SceneHostVM) As Boolean
' LibMap.SetRefSceneHostVM(SceneHostVM)
' Return Not IsNothing(LibMap.refSceneHostVM)
' End Function
' Friend Function SetRefSecondaryWindowVM(SecondaryWindowVM As SecondaryWindowVM) As Boolean
' m_refSecondaryWindowVM = SecondaryWindowVM
' Return Not IsNothing(m_refSecondaryWindowVM)
' End Function
' Friend Function SetRefSecondaryWindowV(SecondaryWindowV As SecondaryWindowV) As Boolean
' m_refSecondaryWindowV = SecondaryWindowV
' Return Not IsNothing(m_refSecondaryWindowV)
' End Function
' Friend Function SetRefMachinePanelVM(MachinePanelVM As MachinePanelVM) As Boolean
' m_refMachinePanelVM = MachinePanelVM
' Return Not IsNothing(m_refMachinePanelVM)
' End Function
' Friend Function SetRefLeftPanelVM(LeftPanelVM As LeftPanelVM) As Boolean
' m_refLeftPanelVM = LeftPanelVM
' Return Not IsNothing(m_refLeftPanelVM)
' End Function
' Friend Function SetRefRightPanelVM(RightPanelVM As RightPanelVM) As Boolean
' m_refRightPanelVM = RightPanelVM
' Return Not IsNothing(m_refRightPanelVM)
' End Function
' Friend Function SetRefDispositionPanelVM(DispositionPanelVM As DispositionPanelVM) As Boolean
' m_refDispositionPanelVM = DispositionPanelVM
' Return Not IsNothing(m_refDispositionPanelVM)
' End Function
' Friend Function SetRefStartMachPanelVM(StartMachPanelVM As StartMachPanelVM) As Boolean
' m_refStartMachPanelVM = StartMachPanelVM
' Return Not IsNothing(m_refStartMachPanelVM)
' End Function
' Friend Function SetRefRibPanelVM(RibPanelVM As RibPanelVM) As Boolean
' m_refRibPanelVM = RibPanelVM
' Return Not IsNothing(m_refRibPanelVM)
' End Function
' Friend Function SetRefControllerInputPanelVM(ControllerInputPanelVM As ControllerInputPanelVM) As Boolean
' m_refControllerInputPanelVM = ControllerInputPanelVM
' Return Not IsNothing(m_refControllerInputPanelVM)
' End Function
' Friend Function SetRefInstrumentPanelVM(InstrumentPanelVM As InstrumentPanelVM) As Boolean
' m_refInstrumentPanelVM = InstrumentPanelVM
' Return Not IsNothing(m_refInstrumentPanelVM)
' End Function
' Friend Function SetRefTopPanelVM(TopPanelVM As TopPanelVM) As Boolean
' m_refTopPanelVM = TopPanelVM
' Return Not IsNothing(m_refTopPanelVM)
' End Function
' Friend Function SetRefSliceManagerVM(SliceManagerVM As SliceManagerVM) As Boolean
' m_refSliceManagerVM = SliceManagerVM
' Return Not IsNothing(m_refSliceManagerVM)
' End Function
' Friend Function SetRefTFSEditorVM(TFSEditorVM As TFSEditorVM) As Boolean
' m_refTFSEditorVM = TFSEditorVM
' Return Not IsNothing(m_refTFSEditorVM)
' End Function
' Friend Function SetRefCurrMachiningPanelVM(CurrMachiningPanelVM As CurrMachiningPanelVM) As Boolean
' m_refCurrMachiningPanelVM = CurrMachiningPanelVM
' Return Not IsNothing(m_refCurrMachiningPanelVM)
' End Function
' Friend Function SetRefMachiningDbVM(MachiningDbVM As MachiningDbVM) As Boolean
' m_refMachiningDbVM = MachiningDbVM
' Return Not IsNothing(m_refMachiningDbVM)
' End Function
' Friend Function SetRefMaterialDbVM(MaterialDbVM As MaterialDbVM) As Boolean
' m_refMaterialDbVM = MaterialDbVM
' Return Not IsNothing(m_refMaterialDbVM)
' End Function
' Friend Function SetRefSliderManagerVM(SliderManagerVM As SliderManagerVM) As Boolean
' m_refSliderManagerVM = SliderManagerVM
' Return Not IsNothing(m_refSliderManagerVM)
' End Function
' Friend Function SetRefRibParamPanelVM(RibParamPanelVM As RibParamPanelVM) As Boolean
' m_refRibParamPanelVM = RibParamPanelVM
' Return Not IsNothing(m_refRibParamPanelVM)
' End Function
' Friend Function SetRefSimulationPanelVM(SimulationPanelVM As SimulationPanelVM) As Boolean
' m_refSimulationPanelVM = SimulationPanelVM
' Return Not IsNothing(m_refSimulationPanelVM)
' End Function
' Friend Function SetRefReferencePanelVM(ReferencePanelVM As ReferencePanelVM) As Boolean
' m_refReferencePanelVM = ReferencePanelVM
' Return Not IsNothing(m_refReferencePanelVM)
' End Function
' Friend Function SetRefViewLayerManagerVM(ViewLayerManagerVM As ViewLayerManagerVM) As Boolean
' m_refViewLayerManagerVM = ViewLayerManagerVM
' Return Not IsNothing(m_refViewLayerManagerVM)
' End Function
' Friend Function SetRefShellNumberPanelVM(ShellNumberPanelVM As ShellNumberPanelVM) As Boolean
' m_refShellNumberPanelVM = ShellNumberPanelVM
' Return Not IsNothing(m_refShellNumberPanelVM)
' End Function
' Friend Function SetRefShellNumberParamPanelVM(ShellNumberParamPanelVM As ShellNumberParamPanelVM) As Boolean
' m_refShellNumberParamPanelVM = ShellNumberParamPanelVM
' Return Not IsNothing(m_refShellNumberParamPanelVM)
' End Function
' Friend Function SetRefFilledSolidPanelVM(FilledSolidPanelVM As FilledSolidPanelVM) As Boolean
' m_refFilledSolidPanelVM = FilledSolidPanelVM
' Return Not IsNothing(m_refFilledSolidPanelVM)
' End Function
' Friend Function SetRefFilledSolidParamPanelVM(FilledSolidParamPanelVM As FilledSolidParamPanelVM) As Boolean
' m_refFilledSolidParamPanelVM = FilledSolidParamPanelVM
' Return Not IsNothing(m_refFilledSolidParamPanelVM)
' End Function
' Friend Function SetRefSplashScreen(SplashScreen As SplashScreen) As Boolean
' m_refSplashScreen = SplashScreen
' Return Not IsNothing(m_refSplashScreen)
' End Function
' Friend Function SetRefManagePartPanelVM(ManagePartPanelVM As ManagePartPanelVM) As Boolean
' m_refManagePartPanelVM = ManagePartPanelVM
' Return Not IsNothing(m_refManagePartPanelVM)
' End Function
' Friend Function SetRefMachineViewPanelVM(MachineViewPanelVM As MachineViewPanelVM) As Boolean
' m_refMachineViewPanelVM = MachineViewPanelVM
' Return Not IsNothing(m_refMachineViewPanelVM)
' End Function
' Friend Function SetRefImportLoadingWndVM(ImportLoadingWndVM As ImportLoadingWndVM) As Boolean
' m_refImportLoadingWndVM = ImportLoadingWndVM
' Return Not IsNothing(m_refImportLoadingWndVM)
' End Function
#End Region ' Set
#Region "Init"
Friend Function BeginInit(FiveLakesUIVM As FiveLakesUIVM) As Boolean
m_refFiveLakesUIVM = FiveLakesUIVM
Return Not IsNothing(m_refFiveLakesUIVM)
End Function
Friend Function EndInit() As Boolean
' Verifico se tutti i pezzi necessari sono stati caricati
'Return Not IsNothing(m_refMainWindowVM) AndAlso Not IsNothing(m_refProjectVM) AndAlso
' Not IsNothing(LibMap.refStatusBarVM) AndAlso Not IsNothing(m_refProjectManagerVM) AndAlso
' Not IsNothing(LibMap.refSceneHostVM) AndAlso Not IsNothing(LibMap.refShowPanelVM) AndAlso
' Not IsNothing(m_refVeinMatchPanelVM) AndAlso
' Not IsNothing(m_refOptionPanelVM) AndAlso Not IsNothing(m_refRawPartTabVM) AndAlso
' Not IsNothing(m_refNestingTabVM) AndAlso Not IsNothing(m_refSimulTabVM) AndAlso
' Not IsNothing(m_refMachiningTabVM) AndAlso
' LibMap.EndInit()
Return Not IsNothing(m_refFiveLakesUIVM)
End Function
#End Region ' Init
End Module
@@ -0,0 +1,66 @@
Imports System.Globalization
Public Module StringConversion
Public Function DoubleToString(ByVal dVal As Double, ByVal nNumDec As Integer) As String
Dim sFormat As String = "F" + Math.Abs(nNumDec).ToString()
Dim sVal As String = dVal.ToString(sFormat, CultureInfo.InvariantCulture)
If nNumDec > 0 Then
Return sVal.TrimEnd("0".ToCharArray()).TrimEnd(".".ToCharArray)
Else
Return sVal
End If
End Function
Public Function StringToDouble(ByVal sVal As String, ByRef dVal As Double) As Boolean
' Return EgtLuaEvalNumExpr(sVal, dVal)
Return Double.TryParse(sVal, NumberStyles.Float, CultureInfo.InvariantCulture.NumberFormat, dVal)
End Function
'Public Function StringToDoubleAdv(ByVal sVal As String, ByRef dVal As Double, Optional bEval As Boolean = False) As Boolean
' If bEval Then
' Return EgtLuaEvalNumExpr(sVal, dVal)
' Else
' Return Double.TryParse(sVal, NumberStyles.Float, CultureInfo.InvariantCulture.NumberFormat, dVal)
' End If
'End Function
Public Function StringToInt(sVal As String, ByRef nVal As Integer) As Boolean
Dim dVal As Double = 0
If Not StringToDouble(sVal, dVal) Then Return False
nVal = CInt(Math.Round(dVal))
Return True
End Function
'Public Function LenToString(ByVal dVal As Double, ByVal nNumDec As Integer) As String
' Return DoubleToString(EgtToUiUnits(dVal), nNumDec)
'End Function
'Public Function StringToLen(ByVal sVal As String, ByRef dVal As Double) As Boolean
' If EgtLuaEvalNumExpr(sVal, dVal) Then
' dVal = EgtFromUiUnits(dVal)
' Return True
' Else
' Return False
' End If
'End Function
'Public Function StringToLenAdv(ByVal sVal As String, ByRef dVal As Double, Optional bEval As Boolean = False) As Boolean
' If bEval Then
' If EgtLuaEvalNumExpr(sVal, dVal) Then
' dVal = EgtFromUiUnits(dVal)
' Return True
' Else
' Return False
' End If
' Else
' If Double.TryParse(sVal, NumberStyles.Float, CultureInfo.InvariantCulture.NumberFormat, dVal) Then
' dVal = EgtFromUiUnits(dVal)
' Return True
' Else
' Return False
' End If
' End If
'End Function
End Module
@@ -0,0 +1,12 @@
Imports System.ComponentModel
Public Class VMBase
Implements INotifyPropertyChanged
Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged
Public Sub NotifyPropertyChanged(propName As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
End Sub
End Class
+5
View File
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="KeraLua" version="1.4.1" targetFramework="net472" />
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net472" />
</packages>
+3
View File
@@ -0,0 +1,3 @@
param([string]$ProjectDir, [string]$ProjectPath);
Copy-Item -Path c:\EgtProg\Effector\Effector*.exe $ProjectDir\..\Exe
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.