Compare commits

9 Commits

Author SHA1 Message Date
Annamaria Sassi a2a611ff9e Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/interfacce/egtwindowmaker into develop 2025-08-06 19:09:02 +02:00
Annamaria Sassi 46ee89fbde Aggiunto funzionamento BottomRail per Sash 2025-08-06 19:08:51 +02:00
Emmanuele Sassi c5e20a4855 - modificati parametri agb per gestione parametri testuali
- iniziata implementazione threshold
2025-07-29 11:42:06 +02:00
Emmanuele Sassi 9bb0299cfa - introdotto reset aree evidenziate su ricalcolo serramento 2025-04-16 10:06:08 +02:00
Emmanuele Sassi 761490510b - aggiunto bottomrail per sash
- aggiunto bottone per visualizzare/nascondere ferramenta
- impostata path cartella profilo nel costruttore
2025-04-15 17:31:39 +02:00
Emmanuele Sassi 9acbbab49e - introdotto BottomRail
- migliorie a grafica e CRM
2025-04-01 11:13:50 +02:00
Emmanuele Sassi d3e9474417 - migliorie grafiche stile crm
- correzzioni varie
2025-03-21 11:22:58 +01:00
Emmanuele Sassi ff30e35665 - riorganizzazione cartelle e path 2025-03-19 11:19:55 +01:00
Emmanuele Sassi c36390f183 - primo rilascio 2025-03-19 10:40:03 +01:00
109 changed files with 12227 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
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}") = "EgtWindowMaker", "EgtWindowMaker\EgtWindowMaker.vbproj", "{DBEEAB57-E513-456C-8D10-56411B6AB67D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DBEEAB57-E513-456C-8D10-56411B6AB67D}.Debug|x64.ActiveCfg = Debug|x64
{DBEEAB57-E513-456C-8D10-56411B6AB67D}.Debug|x64.Build.0 = Debug|x64
{DBEEAB57-E513-456C-8D10-56411B6AB67D}.Debug|x86.ActiveCfg = Debug|x86
{DBEEAB57-E513-456C-8D10-56411B6AB67D}.Debug|x86.Build.0 = Debug|x86
{DBEEAB57-E513-456C-8D10-56411B6AB67D}.Release|x64.ActiveCfg = Release|x64
{DBEEAB57-E513-456C-8D10-56411B6AB67D}.Release|x64.Build.0 = Release|x64
{DBEEAB57-E513-456C-8D10-56411B6AB67D}.Release|x86.ActiveCfg = Release|x86
{DBEEAB57-E513-456C-8D10-56411B6AB67D}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {15CFDCEA-4D67-44B0-BF5C-AE78E3C4A032}
EndGlobalSection
EndGlobal
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>
+9
View File
@@ -0,0 +1,9 @@
<Application x:Class="Application"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Application.Resources>
<ResourceDictionary Source="Utility/Dictionary.xaml"/>
</Application.Resources>
</Application>
+22
View File
@@ -0,0 +1,22 @@
Class Application
' Application-level events, such as Startup, Exit, and DispatcherUnhandledException
' can be handled in this file.
Protected Overrides Sub OnStartup(e As StartupEventArgs)
MyBase.OnStartup(e)
ShutdownMode = System.Windows.ShutdownMode.OnMainWindowClose
'If e.Args.Count = 0 Then
' ' creo finestra SplashScreen
' Dim SplashScreen As New SplashScreen
' Me.MainWindow = SplashScreen
' Me.MainWindow.Show()
' Map.SetRefSplashScreen(SplashScreen)
'End If
' Creo la View principale
Me.MainWindow = New MainWindowV
' Mostro la View principale
Me.MainWindow.Show()
End Sub
End Class
+57
View File
@@ -0,0 +1,57 @@
<UserControl x:Class="CRMPageV"
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"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:EgtWindowMaker"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl.Resources>
<sys:Int32 x:Key="NewCustomer">0</sys:Int32>
<sys:Int32 x:Key="CustomerList">1</sys:Int32>
<sys:Int32 x:Key="NewEstimation">2</sys:Int32>
<sys:Int32 x:Key="EstimationList">3</sys:Int32>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<Button Content="Nuovo Cliente"
Command="{Binding Page_Command}"
CommandParameter="{StaticResource NewCustomer}"
Style="{StaticResource Button.CRMPage}"/>
<Button Content="Lista Clienti"
Command="{Binding Page_Command}"
CommandParameter="{StaticResource CustomerList}"
Style="{StaticResource Button.CRMPage}"/>
<Button Content="Nuova offerta"
Command="{Binding Page_Command}"
CommandParameter="{StaticResource NewEstimation}"
Style="{StaticResource Button.CRMPage}"/>
<Button Content="Lista offerte"
Command="{Binding Page_Command}"
CommandParameter="{StaticResource EstimationList}"
Style="{StaticResource Button.CRMPage}"/>
</StackPanel>
<TabControl Grid.Row="1"
SelectedIndex="{Binding SelCRMPage}"
TabStripPlacement="Right"
Style="{StaticResource TabControl.NoHeader}">
<TabItem Header="Nuovo cliente">
<!--<local:NewEstimationPageV DataContext="{StaticResource NewEstimationPageVM}"/>-->
</TabItem>
<TabItem Header="Lista Clienti">
<!--<local:NewEstimationPageV DataContext="{StaticResource NewEstimationPageVM}"/>-->
</TabItem>
<TabItem Header="Dettagli offerta">
<local:EstimationDetailPageV/>
</TabItem>
<TabItem Header="Lista offerte">
<local:EstimationListPageV/>
</TabItem>
</TabControl>
</Grid>
</UserControl>
+3
View File
@@ -0,0 +1,3 @@
Public Class CRMPageV
End Class
+90
View File
@@ -0,0 +1,90 @@
Imports System.IO
Imports EgtWPFLib5
Imports Newtonsoft.Json
Public Class CRMPageVM
Inherits VMBase
Private m_SelPage As CRMPages
Public Property SelCRMPage As Integer
Get
Return m_SelPage
End Get
Set(value As Integer)
SetSelPage(value)
End Set
End Property
Friend Sub SetSelPage(Page As CRMPages)
Dim bOk As Boolean = True
' Esco dallo stato corrente
Select Case m_SelPage
Case CRMPages.NEWCUSTOMER
'bOk = ExitHOME()
Case CRMPages.CUSTOMERLIST
'bOk = ExitESTIMATING()
Case CRMPages.ESTIMATIONDETAIL
' bOk = ExitPRODUCING()
Case CRMPages.ESTIMATIONLIST
'bOk = ExitDESIGNING()
End Select
If bOk Then
' Entro nel nuovo stato
m_SelPage = Page
Select Case m_SelPage
Case CRMPages.NEWCUSTOMER
'bOk = InitHOME()
Case CRMPages.CUSTOMERLIST
'bOk = InitESTIMATING()
Case CRMPages.ESTIMATIONDETAIL
'bOk = InitPRODUCING()
bOk = Map.refEstimationDetailPageVM.InitEstimationDetailPage()
Case CRMPages.ESTIMATIONLIST
bOk = Map.refEstimationListPageVM.InitEstimationListPage()
End Select
End If
NotifyPropertyChanged(NameOf(SelCRMPage))
End Sub
' Definizione comandi
Private m_cmdPage As ICommand
Sub New()
Map.SetRefCRMPageVM(Me)
End Sub
Friend Function InitCRMPage() As Boolean
'leggo lista stime da file
Map.refEstimationListPageVM.ReadEstimationList()
Return True
End Function
#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)
Select Case nPage
Case CRMPages.NEWCUSTOMER
Case CRMPages.CUSTOMERLIST
Case CRMPages.ESTIMATIONDETAIL
' se entro direttamente nei dettagli, creo nuovo progetto
Map.refEstimationListPageVM.NewEstimation()
Case CRMPages.ESTIMATIONLIST
End Select
SetSelPage(nPage)
End Sub
#End Region ' Page
#End Region ' COMMANDS
End Class
+76
View File
@@ -0,0 +1,76 @@
'----------------------------------------------------------------------------
' EgalTech 2015-2017
'----------------------------------------------------------------------------
' File : ConstGen.vb Data : 10.04.17 Versione : 1.8d1
' Contenuto : Modulo costanti generali.
'
'
'
' Modifiche : 10.04.17 DS 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 = "EgtWindowMaker.lic"
Public Const S_LICENCE As String = "Licence"
Public Const K_LOCKID As String = "LockId"
Public Const K_KEY As String = "Key"
Public Const K_NESTKEY As String = "NestKey"
' Pagine del programma
Public Enum Pages As Integer
HOME = 0
ESTIMATING = 1
PRODUCING = 2
DESIGNING = 3
End Enum
Public Enum CRMPages
NEWCUSTOMER = 0
CUSTOMERLIST = 1
ESTIMATIONDETAIL = 2
ESTIMATIONLIST = 3
End Enum
' Abilitazioni licenza
Friend Enum KEY_OPT As UInteger
BASE = 1 ' Prodotto EgtWindowMaker
End Enum
' File di log generale
Public Const GENLOG_FILE_NAME As String = "EgtWindowMaker#.txt"
' Sottodirettorio di configurazione
Public Const CONF_DIR As String = "Config"
' Sottodirettorio dei lua
Public Const WINDOW_DIR As String = "Window"
' Sottodirettorio dei lua
Public Const DESIGNING_DIR As String = "Designing"
' Sottodirettorio dei lua
Public Const CAMAUTO_DIR As String = "CAMAuto"
' Sottodirettorio dei profili
Public Const PROFILES_DIR As String = "Profiles"
' Sottodirettorio dei template
Public Const TEMPLATE_DIR As String = "Template"
' Sottodirettorio dei offerte
Public Const ESTIMATIONS_DIR As String = "Estimations"
' Sottodirettorio delle risorse
Public Const RES_DIR As String = "Resources"
' Sottodirettorio temporaneo
Public Const TEMP_DIR As String = "Temp"
' Sottodirettorio lavorazioni
Public Const MACHININGS_DIR As String = "Machinings"
' Sottodirettorio materiali
Public Const MATERIALS_DIR As String = "Materials"
' Sottodirettorio di default per le macchine
Public Const MACHINES_DFL_DIR As String = "Machines"
End Module
+136
View File
@@ -0,0 +1,136 @@
'----------------------------------------------------------------------------
' EgalTech 2015-2015
'----------------------------------------------------------------------------
' File : ConstIni.vb Data : 12.02.15 Versione : 1.6b3
' Contenuto : Modulo costanti sezione e chiavi per file Ini.
'
'
'
' Modifiche : 12.02.15 DS Creazione modulo.
'
'
'----------------------------------------------------------------------------
Public Module ConstIni
Public Const INI_FILE_NAME As String = "EgtWindowMaker.ini"
'Public Const S_GENERAL As String = "General"
'Public Const K_DEBUG As String = "Debug"
'Public Const K_LICENCE As String = "Licence"
'Public Const K_USERLEVEL As String = "UserLevel"
'Public Const K_MAXINST As String = "MaxInstances"
'Public Const K_INSTANCES As String = "Instances"
'Public Const K_COMMANDLOG As String = "CommandLog"
'Public Const K_MESSAGESDIR As String = "MessagesDir"
'Public Const K_MESSAGES As String = "Messages"
'Public Const K_WINPLACE As String = "WinPlace"
'Public Const K_LASTPROJ As String = "LastProj"
Public Const K_NETKEY As String = "NetKey"
Public Const K_LASTNGEDIR As String = "LastNgeDir"
Public Const K_LASTIMPDIR As String = "LastImpDir"
Public Const K_MACHINEEXPORT As String = "MachineExport"
'Public Const K_SUPPORT As String = "Support"
'Public Const S_LANGUAGES As String = "Languages"
'Public Const K_LANGUAGE As String = "Language"
Public Const S_VIEWLAYER As String = "ViewLayer"
Public Const K_MOD_PRINTSOLID As String = "ModPrintSolid"
Public Const K_MOD_REFERENCE As String = "ModReference"
Public Const K_MOD_STARTMACHINING As String = "ModStartMAchining"
Public Const K_MOD_RIBS As String = "ModRibs"
Public Const K_MOD_SHELLNUMBER As String = "ModShellNumber"
Public Const K_MOD_AUXSOLIDS As String = "ModAuxSolids"
Public Const K_MOD_SOLIDSLICE As String = "ModSolidSlice"
Public Const K_MOD_SLICETOOLPATH As String = "ModSliceToolPath"
Public Const K_MOD_OTHERS As String = "ModOthers"
Public Const K_SLC_PRINTSOLID As String = "SlcPrintSolid"
Public Const K_SLC_REFERENCE As String = "SlcReference"
Public Const K_SLC_STARTMACHINING As String = "SlcStartMAchining"
Public Const K_SLC_RIBS As String = "SlcRibs"
Public Const K_SLC_SHELLNUMBER As String = "SlcShellNumber"
Public Const K_SLC_AUXSOLIDS As String = "SlcAuxSolids"
Public Const K_SLC_SOLIDSLICE As String = "SlcSolidSlice"
Public Const K_SLC_SLICETOOLPATH As String = "SlcSliceToolPath"
Public Const K_SLC_OTHERS As String = "SlcOthers"
'Public Const S_LUA As String = "Lua"
'Public Const K_LIBSDIR As String = "LibsDir"
'Public Const K_BASELIB As String = "BaseLib"
'Public Const S_GEOMDB As String = "GeomDB"
'Public Const K_DEFAULTFONT As String = "DefaultFont"
'Public Const K_NFEFONTDIR As String = "NfeFontDir"
'Public Const K_DEFAULTCOLOR As String = "DefaultColor"
'Public Const K_SAVETYPE As String = "SaveType"
Public Const K_SURFTMTOLER As String = "SurfTmToler"
'Public Const S_OPENGL As String = "OpenGL"
'Public Const K_DOUBLEBUFFER As String = "DoubleBuffer"
'Public Const K_COLORBITS As String = "ColorBits"
'Public Const K_DEPTHBITS As String = "DepthBits"
'Public Const K_DRIVER As String = "Driver"
'Public Const S_SCENE As String = "Scene"
'Public Const K_BACKTOP As String = "BackTop"
'Public Const K_BACKBOTTOM As String = "BackBottom"
'Public Const K_SHOWGFRAME As String = "ShowGFrame"
'Public Const K_MARK As String = "Mark"
'Public Const K_SELSURF As String = "SelSurf"
'Public Const K_SHOWMODE As String = "ShowMode"
'Public Const K_CURVEDIR As String = "CurveDir"
'Public Const K_SHOWTRIAADV As String = "ShowTriaAdv"
Public Const K_LINEWIDTH As String = "LineWidth"
'Public Const K_TEXMAXLINPIX As String = "TextureMaxLinPixels"
'Public Const K_ZOOMWIN As String = "ZoomWin"
'Public Const K_DISTLINE As String = "DistLine"
'Public Const K_MMUNITS As String = "MmUnits"
Public Const K_CUSTOMCOLORS As String = "CustomColors"
'Public Const S_GRID As String = "Grid"
'Public Const K_SHOWGRID As String = "ShowGrid"
'Public Const K_SHOWFRAME As String = "ShowFrame"
'Public Const K_SNAPSTEP As String = "SnapStep"
'Public Const K_SNAPSTEPINCH As String = "SnapStepInch"
'Public Const K_MINLINESSTEP As String = "MinLineSStep"
'Public Const K_MAJLINESSTEP As String = "MajLineSStep"
'Public Const K_EXTSSTEP As String = "ExtSStep"
'Public Const K_MINLNCOLOR As String = "MinLnColor"
'Public Const K_MAJLNCOLOR As String = "MajLnColor"
Public Const S_IMPORT As String = "Import"
Public Const K_DXFSCALE As String = "DxfScale"
Public Const K_STLSCALE As String = "StlScale"
Public Const K_CNCFLAG As String = "CncFlag"
'Public Const S_SIMUL As String = "Simul"
'Public Const K_SLIDERX As String = "SliderX"
'Public Const K_SLIDERVAL As String = "SliderVal"
Public Const K_MACHVIEWMODE As String = "MachViewMode"
Public Const S_PRINTING3D As String = "3dPrinting"
Public Const K_3PRNBASEDIR As String = "BaseDir"
Public Const K_CURRMATERIAL As String = "CurrMaterial"
Public Const K_CURRMACHINING As String = "CurrMachining"
Public Const K_VIEWSLIDER As String = "ViewSlider"
Public Const K_IMPORTCURREXTENSION As String = "ImportCurrExtension"
Public Const S_COLORS As String = "Colors"
Public Const K_CLR_PRINTPART As String = "PrintPart"
Public Const K_CLR_RIBS As String = "Ribs"
Public Const K_CLR_SHELLNUMBERS As String = "ShellNumbers"
Public Const K_CLR_AUXSOLIDS As String = "AuxSolids"
Public Const K_CLR_MACHSTART As String = "MachStart"
Public Const K_CLR_OTHERS As String = "Others"
Public Const S_WINDOW As String = "Window"
Public Const K_BASEDIR As String = "BaseDir"
Public Const K_PROFILEDIR As String = "ProfileDir"
Public Const K_TEMPLATEDIR As String = "TemplateDir"
Public Const K_ESTIMATIONDIR As String = "EstimationDir"
Public Const S_MRUFILES As String = "MruFiles"
Public Const S_MRUIMPORTFILES As String = "MruImportFiles"
End Module
@@ -0,0 +1,35 @@
'----------------------------------------------------------------------------
' EgalTech 2015-2015
'----------------------------------------------------------------------------
' File : ConstIni.vb Data : 12.02.15 Versione : 1.6b3
' Contenuto : Modulo costanti sezione e chiavi per file Ini.
'
'
'
' Modifiche : 12.02.15 DS Creazione modulo.
'
'
'----------------------------------------------------------------------------
Public Module ConstMachDataIni
Public Const MACHDATA_INI_FILE_NAME As String = "Data.ini"
Public Const S_TABLE As String = "Table"
Public Const K_DIMX As String = "DimX"
Public Const K_DIMY As String = "DimY"
Public Const K_POSX As String = "PosX"
Public Const K_POSY As String = "PosY"
Public Const K_POSZ As String = "PosZ"
Public Const S_VERTICAL As String = "Vertical"
Public Const S_45DEGX As String = "45DegX"
Public Const S_45DEGY As String = "45DegY"
Public Const S_HORIZONTAL As String = "Horizontal"
Public Const K_MINX As String = "MinX"
Public Const K_MAXX As String = "MaxX"
Public Const K_MINY As String = "MinY"
Public Const K_MAXY As String = "MaxY"
End Module
+17
View File
@@ -0,0 +1,17 @@
Public Module ConstMachIni
Public Const MACH_INI_FILE_NAME As String = "MachData.ini"
Public Const S_MACHINING As String = "Machining"
Public Const K_MACH_INITSCRIPT As String = "InitScript"
Public Const K_MACH_EXITSCRIPT As String = "ExitScript"
Public Const S_MACH_PRINTING3D As String = "3dPrinting"
Public Const K_SLICINGTYPE As String = "SlicingType"
Public Const K_SPEED_MIN As String = "SpeedMin"
Public Const K_SPEED_MAX As String = "SpeedMax"
Public Const K_MAX_HEIGHT As String = "HMax"
Public Const S_MINMAX As String = "MinMax"
End Module
+54
View File
@@ -0,0 +1,54 @@
Public Module ConstMsg
Public Const MSG_SETUPERRORS As Integer = 5000 + 1470
Public Const MSG_MISSINGKEYWD As Integer = 10100
Public Const MSG_NUMERICKEYBOARDWD As Integer = 10200
Public Const MSG_MESSAGEBOX As Integer = 15000
Public Const MSG_EGTSAVEFILEDIALOG As Integer = 30000
Public Const MSG_OMAGCUT As Integer = 90000
Public Const MSG_GENERAL As Integer = MSG_OMAGCUT
Public Const MSG_WORKINPROGRESSPAGEUC As Integer = MSG_OMAGCUT + 100
Public Const MSG_DIRECTCUTPAGEUC As Integer = MSG_OMAGCUT + 200
Public Const MSG_MANUALAXESMOVEPAGEUC As Integer = MSG_OMAGCUT + 220
Public Const MSG_CADCUTPAGEUC As Integer = MSG_OMAGCUT + 300
Public Const MSG_NESTPAGEUC As Integer = MSG_OMAGCUT + 330
Public Const MSG_SPLITPAGEUC As Integer = MSG_OMAGCUT + 340
Public Const MSG_MOVERAWPAGEUC As Integer = MSG_OMAGCUT + 360
Public Const MSG_DRAWPAGEUC As Integer = MSG_OMAGCUT + 380
Public Const MSG_COMPONENTPAGEUC As Integer = MSG_OMAGCUT + 400
Public Const MSG_IMPORTPAGEUC As Integer = MSG_OMAGCUT + 450
Public Const MSG_OPENPAGEUC As Integer = MSG_OMAGCUT + 490
Public Const MSG_RAWPARTPAGEUC As Integer = MSG_OMAGCUT + 500
Public Const MSG_CHOOSEMACHININGPAGEUC As Integer = MSG_OMAGCUT + 535
Public Const MSG_SIMULATIONPAGEUC As Integer = MSG_OMAGCUT + 550
Public Const MSG_FRAMECUTPAGEUC As Integer = MSG_OMAGCUT + 600
Public Const MSG_MACHINEPAGEUC As Integer = MSG_OMAGCUT + 700
Public Const MSG_TOOLSDBPAGEUC As Integer = MSG_OMAGCUT + 720
Public Const MSG_MACHININGSDBPAGEUC As Integer = MSG_OMAGCUT + 760
Public Const MSG_COMBOBOXPARAM As Integer = MSG_OMAGCUT + 800
Public Const MSG_ALARMSPAGEUC As Integer = MSG_OMAGCUT + 900
Public Const MSG_MACHINECNPAGEUC As Integer = MSG_OMAGCUT + 950
Public Const MSG_OPTIONSPAGEUC As Integer = MSG_OMAGCUT + 980
Public Const MSG_EGTMSGBOX As Integer = MSG_OMAGCUT + 1100
Public Const MSG_CSVPAGEUC As Integer = MSG_OMAGCUT + 1200
Public Const MSG_OMAGOFFICE As Integer = 91400
Public Const MSG_OPTIONPANEL As Integer = MSG_OMAGOFFICE
Public Const MSG_MYMACHININGDBWINDOW As Integer = MSG_OMAGOFFICE + 50
Public Const MSG_TOPCMDBAR As Integer = MSG_OMAGOFFICE + 100
Public Const MSG_RAWPARTTAB As Integer = MSG_OMAGOFFICE + 150
Public Const MSG_VEINMATCHING As Integer = MSG_OMAGOFFICE + 200
Public Const MSG_GENERIC As Integer = MSG_OMAGOFFICE + 250
Public Const MSG_EGTWPFLIB5 As Integer = 30000
Public Const MSG_TOPCOMMANDBAR As Integer = MSG_EGTWPFLIB5 + 500
Public Const MSG_GRIDVIEWPANEL As Integer = MSG_EGTWPFLIB5 + 800
Public Const MSG_TOOLDB As Integer = MSG_EGTWPFLIB5 + 1000
Public Const MSG_TOOLDBERRORS As Integer = MSG_EGTWPFLIB5 + 1100
Public Const MSG_MACHININGDB As Integer = MSG_EGTWPFLIB5 + 1200
Public Const MSG_MACHININGDBERRORS As Integer = MSG_EGTWPFLIB5 + 1400
Public Const MSG_SIMULATION As Integer = MSG_EGTWPFLIB5 + 1600
End Module
+142
View File
@@ -0,0 +1,142 @@
'----------------------------------------------------------------------------
' EgalTech 2015-2017
'----------------------------------------------------------------------------
' File : ConstGen.vb Data : 10.04.17 Versione : 1.8d1
' Contenuto : Modulo costanti generali.
'
'
'
' Modifiche : 10.04.17 DS Creazione modulo.
'
'
'----------------------------------------------------------------------------
Public Module ConstWindow
Public Enum AreaTypes
NULL = 0
FRAME = 1
SASH = 2
FILL = 3
SPLIT = 4
SPLITTED = 5
End Enum
Public Enum FillTypes
NULL = 0
GLASS = 1
WOOD = 2
End Enum
Public Enum Shapes As Integer
RECTANGLE = 1
RIGHTCHAMFER = 2
LEFTCHAMFER = 3
DOUBLECHAMFER = 4
ARC = 11
ARC_FULL = 12
FILLET = 13
DOUBLEARC = 14
TRIANGLE = 21
CUSTOM = 100
End Enum
Public Enum SplitShapes As Integer
NULL = 0
VERTICAL = 1
HORIZONTAL = 2
GRID = 3
CUSTOM = 100
End Enum
Public Enum Joints As Integer
ANGLED = 1
FULL_H = 2
FULL_V = 3
End Enum
Public Enum SashTypes As Integer
NULL = 0
ACTIVE = 1
INACTIVE = 2
ACTIVE_IN = 3
ACTIVE_OUT = 4
INACTIVE_IN = 5
INACTIVE_OUT = 6
End Enum
Public Enum Openings As Integer
NULL = 0
TURNONLY_LEFT = 1
TURNONLY_RIGHT = 2
TILTTURN_LEFT = 3
TILTTURN_RIGHT = 4
TILTONLY_TOP = 5
TILTONLY_BOTTOM = 6
PIVOT = 7
FIXED = 8
COMPLANARSLIDE_LEFT = 9
COMPLANARSLIDE_RIGHT = 10
LIFTSLIDE_LEFT = 11
LIFTSLIDE_RIGHT = 12
End Enum
Public Enum OpeningTypes As Integer
NULL = 0
TURNONLY = 1
TILTTURN = 2
TILTONLY = 3
PIVOT = 4
FIXED = 5
COMPLANARSLIDE = 6
LIFTSLIDE = 7
End Enum
Public Enum OpeningSides As Integer
NULL = 0
LEFT = 1
RIGHT = 2
End Enum
'------------ LUA ------------------
Public Enum LuaAreaTypes
NULL = 0
FRAME = 1
SASH = 2
FILL = 3
SPLIT = 4
End Enum
Public Enum LuaSplitTypes
NULL = 0
MULLION = 1
FRENCH = 2
End Enum
Public Enum LuaShapes
RECT = 1
CHAMFER_SIDE = 2
CHAMFER = 3
ROUND_ARC = 4
SEGMENTAL_ARC = 5
POINTED_ARC = 6
TRIANGLE = 7
End Enum
Public Const WIN_OUTLINE As String = "Outline"
Public Const WIN_AREA As String = "Area"
Public Const WIN_AREATYPE As String = "AreaType"
Public Const WIN_SELECTION As String = "Selection"
'------------ LUA ------------------
Public Const LUA_WIN_SPLITSELECTION As String = "SplitSelection"
Public Const LUA_WIN_SPLIT As String = "Split"
Public Const LUA_WIN_SPLITTYPE As String = "SplitType"
Public Const LUA_WIN_ORIGSPLIT As String = "OrigSplit"
Public Const LUA_WIN_HDW_FAVOURITE As String = "HdwFavourite"
Public Const LUA_WIN_HDW_HANDLE As String = "HdwHandle"
Public Const LUA_WIN_HDW_OPTIONS As String = "HdwOptions"
End Module
Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

+339
View File
@@ -0,0 +1,339 @@
<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>
<ProjectGuid>{DBEEAB57-E513-456C-8D10-56411B6AB67D}</ProjectGuid>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
<OutputType>WinExe</OutputType>
<RootNamespace>EgtWindowMaker</RootNamespace>
<AssemblyName>EgtWindowMaker</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<MyType>Custom</MyType>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x64\Debug\</OutputPath>
<DocumentationFile>EgtWindowMaker.xml</DocumentationFile>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42314</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x64\Release\</OutputPath>
<DocumentationFile>EgtWindowMaker.xml</DocumentationFile>
<Optimize>true</Optimize>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42314</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x86\Debug\</OutputPath>
<DocumentationFile>EgtWindowMaker.xml</DocumentationFile>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42314</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x86\Release\</OutputPath>
<DocumentationFile>EgtWindowMaker.xml</DocumentationFile>
<Optimize>true</Optimize>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42314</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>EgtWindowMaker.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="EgtUILib">
<HintPath>..\..\..\EgtProg\DllD32\EgtUILib.dll</HintPath>
</Reference>
<Reference Include="EgtWPFLib5">
<HintPath>..\..\..\EgtProg\DllD32\EgtWPFLib5.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.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<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" />
<Reference Include="WindowsFormsIntegration" />
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="Application.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
<Compile Include="Constants\ConstGen.vb" />
<Compile Include="Constants\ConstIni.vb" />
<Compile Include="Constants\ConstMachDataIni.vb" />
<Compile Include="Constants\ConstMachIni.vb" />
<Compile Include="Constants\ConstMsg.vb" />
<Compile Include="Constants\ConstWindow.vb" />
<Compile Include="CRMPage\CRMPageV.xaml.vb">
<DependentUpon>CRMPageV.xaml</DependentUpon>
</Compile>
<Compile Include="CRMPage\CRMPageVM.vb" />
<Compile Include="EstimatingPage\EstimatingPageV.xaml.vb">
<DependentUpon>EstimatingPageV.xaml</DependentUpon>
</Compile>
<Compile Include="EstimatingPage\EstimatingPageVM.vb" />
<Compile Include="EstimationDetailPage\Estimation.vb" />
<Compile Include="EstimationListPage\EstimationListPageV.xaml.vb">
<DependentUpon>EstimationListPageV.xaml</DependentUpon>
</Compile>
<Compile Include="EstimationListPage\EstimationListPageVM.vb" />
<Compile Include="HomePage\HomePageV.xaml.vb">
<DependentUpon>HomePageV.xaml</DependentUpon>
</Compile>
<Compile Include="HomePage\HomePageVM.vb" />
<Compile Include="Json\JsonEstimationDetail.vb" />
<Compile Include="Json\JsonGenWinParam.vb" />
<Compile Include="Json\JsonWindowRow.vb" />
<Compile Include="MainWindow\MainWindowM.vb" />
<Compile Include="MainWindow\MainWindowV.xaml.vb">
<DependentUpon>MainWindowV.xaml</DependentUpon>
</Compile>
<Compile Include="MainWindow\MainWindowVM.vb" />
<Compile Include="EstimationDetailPage\EstimationDetailPageV.xaml.vb">
<DependentUpon>EstimationDetailPageV.xaml</DependentUpon>
</Compile>
<Compile Include="EstimationDetailPage\EstimationDetailPageVM.vb" />
<Compile Include="NewWindowWnd\NewWindowWndV.xaml.vb">
<DependentUpon>NewWindowWndV.xaml</DependentUpon>
</Compile>
<Compile Include="NewWindowWnd\NewWindowWndVM.vb" />
<Compile Include="ProducingPage\ProducingPageV.xaml.vb">
<DependentUpon>ProducingPageV.xaml</DependentUpon>
</Compile>
<Compile Include="ProducingPage\ProducingPageVM.vb" />
<Compile Include="ProjManager\ProjManagerV.xaml.vb">
<DependentUpon>ProjManagerV.xaml</DependentUpon>
</Compile>
<Compile Include="ProjManager\ProjManagerVM.vb" />
<Compile Include="SceneHost\MySceneHostVM.vb" />
<Compile Include="SceneHost\SceneHostV.xaml.vb">
<DependentUpon>SceneHostV.xaml</DependentUpon>
</Compile>
<Compile Include="ShowPanel\ShowPanelV.xaml.vb">
<DependentUpon>ShowPanelV.xaml</DependentUpon>
</Compile>
<Compile Include="Utility\AGBOption.vb" />
<Compile Include="Utility\Dictionary.xaml.vb">
<DependentUpon>Dictionary.xaml</DependentUpon>
</Compile>
<Compile Include="Utility\JsonUtility.vb" />
<Compile Include="Utility\LuaExec.vb" />
<Compile Include="Utility\Map.vb" />
<Compile Include="Application.xaml.vb">
<DependentUpon>Application.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="ViewPanel\ViewPanelV.xaml.vb">
<DependentUpon>ViewPanelV.xaml</DependentUpon>
</Compile>
<Page Include="CRMPage\CRMPageV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="EstimatingPage\EstimatingPageV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="EstimationListPage\EstimationListPageV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="HomePage\HomePageV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="MainWindow\MainWindowV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="ManageWindow\ManageWindowV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="EstimationDetailPage\EstimationDetailPageV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="NewWindowWnd\NewWindowWndV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="ProducingPage\ProducingPageV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="ProjManager\ProjManagerV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="SceneHost\SceneHostV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="ShowPanel\ShowPanelV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Utility\Dictionary.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="ViewPanel\ViewPanelV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
</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="ManageWindow\ManageWindowV.xaml.vb">
<DependentUpon>ManageWindowV.xaml</DependentUpon>
</Compile>
<Compile Include="ManageWindow\ManageWindowVM.vb" />
<Compile Include="My Project\AssemblyInfo.vb">
<SubType>Code</SubType>
</Compile>
<Compile Include="My Project\MyExtensions\MyWpfExtension.vb">
<VBMyExtensionTemplateID>Microsoft.VisualBasic.WPF.MyExtension</VBMyExtensionTemplateID>
<VBMyExtensionTemplateVersion>1.0.0.0</VBMyExtensionTemplateVersion>
</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>
<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>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\AboutBox\EgalwareLogo.png" />
<Resource Include="Resources\AboutBox\IcarusLogo.png" />
<Resource Include="Resources\Common\Cancel.png" />
<Resource Include="Resources\Common\Close.png" />
<Resource Include="Resources\Common\Maximize.png" />
<Resource Include="Resources\Common\Minimize.png" />
<Resource Include="Resources\Common\Ok.png" />
<Resource Include="Resources\Common\Restore.png" />
<Resource Include="Resources\ProjectManager\Export.png" />
<Resource Include="Resources\ProjectManager\ExportProject.png" />
<Resource Include="Resources\ProjectManager\Help.png" />
<Resource Include="Resources\ProjectManager\Import.png" />
<Resource Include="Resources\ProjectManager\ImportProject.png" />
<Resource Include="Resources\ProjectManager\New.png" />
<Resource Include="Resources\ProjectManager\Open.png" />
<Resource Include="Resources\ProjectManager\Options.png" />
<Resource Include="Resources\ProjectManager\Save.png" />
<Resource Include="Resources\ProjectManager\SaveAs.png" />
<Resource Include="Resources\ProjectManager\Send.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="EgtWindowMaker.ico" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\ShowPanel\RenderingHL.png" />
<Resource Include="Resources\ShowPanel\RenderingSH.png" />
<Resource Include="Resources\ShowPanel\RenderingWF.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\ViewPanel\LookFromBACK.png" />
<Resource Include="Resources\ViewPanel\LookFromBOTTOM.png" />
<Resource Include="Resources\ViewPanel\LookFromFRONT.png" />
<Resource Include="Resources\ViewPanel\LookFromISO_NE.png" />
<Resource Include="Resources\ViewPanel\LookFromISO_NW.png" />
<Resource Include="Resources\ViewPanel\LookFromISO_SE.png" />
<Resource Include="Resources\ViewPanel\LookFromISO_SW.png" />
<Resource Include="Resources\ViewPanel\LookFromLEFT.png" />
<Resource Include="Resources\ViewPanel\LookFromRIGHT.png" />
<Resource Include="Resources\ViewPanel\LookFromTOP.png" />
<Resource Include="Resources\ViewPanel\ZoomAll.png" />
<Resource Include="Resources\ViewPanel\ZoomIn.png" />
<Resource Include="Resources\ViewPanel\ZoomOut.png" />
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<PropertyGroup>
<PostBuildEvent>IF "$(PlatformName)"=="x86" IF "$(ConfigurationName)" == "Release" copy $(TargetPath) c:\EgtProg\EgtWindowMaker\EgtWindowMakerR32.exe
IF "$(PlatformName)"=="x86" IF "$(ConfigurationName)" == "Debug" copy $(TargetPath) c:\EgtProg\EgtWindowMaker\EgtWindowMakerD32.exe
IF "$(PlatformName)"=="x64" IF "$(ConfigurationName)" == "Release" copy $(TargetPath) c:\EgtProg\EgtWindowMaker\EgtWindowMakerR64.exe
IF "$(PlatformName)"=="x64" IF "$(ConfigurationName)" == "Debug" copy $(TargetPath) c:\EgtProg\EgtWindowMaker\EgtWindowMakerD64.exe</PostBuildEvent>
</PropertyGroup>
</Project>
@@ -0,0 +1,9 @@
<UserControl x:Class="EstimatingPageV"
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:EgtWindowMaker"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
</UserControl>
@@ -0,0 +1,3 @@
Public Class EstimatingPageV
End Class
@@ -0,0 +1,5 @@
Public Class EstimatingPageVM
Sub New()
End Sub
End Class
@@ -0,0 +1,122 @@
Imports System.Collections.ObjectModel
Imports System.IO
Imports Newtonsoft.Json
Public Class Estimation
Private m_nId As Integer
Public Property nId As Integer
Get
Return m_nId
End Get
Set(value As Integer)
m_nId = value
End Set
End Property
Private m_Profile As String
Public Property Profile As String
Get
Return m_Profile
End Get
Set(value As String)
m_Profile = value
End Set
End Property
Private m_WoodType As String
Public Property WoodType As String
Get
Return m_WoodType
End Get
Set(value As String)
m_WoodType = value
End Set
End Property
Private m_Color As String
Public Property Color As String
Get
Return m_Color
End Get
Set(value As String)
m_Color = value
End Set
End Property
Private m_Glass As String
Public Property Glass As String
Get
Return m_Glass
End Get
Set(value As String)
m_Glass = value
End Set
End Property
Private m_FrameConfiguration As String
Public Property FrameConfiguration As String
Get
Return m_FrameConfiguration
End Get
Set(value As String)
m_FrameConfiguration = value
End Set
End Property
Private m_SashConfiguration As String
Public Property SashConfiguration As String
Get
Return m_SashConfiguration
End Get
Set(value As String)
m_SashConfiguration = value
End Set
End Property
Private m_WindowList As New ObservableCollection(Of WindowRow)
Public ReadOnly Property WindowList As ObservableCollection(Of WindowRow)
Get
Return m_WindowList
End Get
End Property
Sub New(nId As Integer)
m_nId = nId
End Sub
<JsonConstructor>
Sub New(nId As Integer, Profile As String, WoodType As String, Color As String, Glass As String, FrameConfiguration As String, SashConfiguration As String, WindowList As ObservableCollection(Of WindowRow))
m_nId = nId
m_Profile = Profile
m_WoodType = WoodType
m_Color = Color
m_Glass = Glass
m_FrameConfiguration = FrameConfiguration
m_SashConfiguration = SashConfiguration
m_WindowList = WindowList
End Sub
Friend Shared Function WriteEstimation(Estimation As Estimation) As Boolean
Dim FilePath As String = Map.refMainWindowVM.MainWindowM.sEstimationDir & "\" & Estimation.nId & "\Estimation.json"
Dim JsonFromWindow As String = JsonConvert.SerializeObject(Estimation, Formatting.Indented)
If File.Exists(FilePath) Then
Try
File.Delete(FilePath)
Catch ex As Exception
Return False
End Try
End If
File.WriteAllText(FilePath, JsonFromWindow)
Return True
End Function
Friend Shared Function ReadEstimation(nId As Integer, ByRef Estimation As Estimation) As Boolean
Dim FilePath As String = Map.refMainWindowVM.MainWindowM.sEstimationDir & "\" & nId & "\Estimation.json"
If Not File.Exists(FilePath) Then Return False
Dim sReadedFile As String = File.ReadAllText(FilePath)
Estimation = JsonConvert.DeserializeObject(Of Estimation)(sReadedFile)
Return True
End Function
End Class
@@ -0,0 +1,188 @@
<Grid x:Class="EstimationDetailPageV"
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:EgtWindowMaker"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TabControl SelectedIndex="{Binding SelPage}">
<TabItem Header="Intestazione offerta"
Style="{StaticResource TabItem.EstimationDetail}">
</TabItem>
<TabItem Header="Dati fatturazione"
Style="{StaticResource TabItem.EstimationDetail}">
</TabItem>
<TabItem Header="Parametri default finestra"
Style="{StaticResource TabItem.EstimationDetail}">
<Border BorderBrush="{StaticResource EgtWindow.DarkBlue}"
BorderThickness="10"
Margin="200,100">
<UniformGrid Columns="2"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Height="400"
Width="600">
<TextBlock Text="Modello"
Style="{StaticResource TextBlock.EstimationDetail}"/>
<ComboBox ItemsSource="{Binding ProfileList}"
SelectedItem="{Binding SelProfile}"
Style="{StaticResource ComboBox.EstimationDetail}"/>
<TextBlock Text="Legno"
Style="{StaticResource TextBlock.EstimationDetail}"/>
<ComboBox ItemsSource="{Binding WoodTypeList}"
SelectedItem="{Binding SelWoodType}"
Style="{StaticResource ComboBox.EstimationDetail}"/>
<TextBlock Text="Colore"
Style="{StaticResource TextBlock.EstimationDetail}"/>
<ComboBox ItemsSource="{Binding ColorList}"
SelectedItem="{Binding SelColor}"
Style="{StaticResource ComboBox.EstimationDetail}"/>
<TextBlock Text="Vetro"
Style="{StaticResource TextBlock.EstimationDetail}"/>
<ComboBox ItemsSource="{Binding GlassList}"
SelectedItem="{Binding SelGlass}"
Style="{StaticResource ComboBox.EstimationDetail}"/>
<TextBlock Text="Configurazione telaio"
Style="{StaticResource TextBlock.EstimationDetail}"/>
<ComboBox ItemsSource="{Binding FrameConfigurationList}"
SelectedItem="{Binding SelFrameConfiguration}"
Style="{StaticResource ComboBox.EstimationDetail}"/>
<TextBlock Text="Configurazione anta"
Style="{StaticResource TextBlock.EstimationDetail}"/>
<ComboBox ItemsSource="{Binding SashConfigurationList}"
SelectedItem="{Binding SelSashConfiguration}"
Style="{StaticResource ComboBox.EstimationDetail}"/>
<TextBlock Text="Modello ferramenta"
Style="{StaticResource TextBlock.EstimationDetail}"/>
<TextBox Text="{Binding HardwareModel}"/>
</UniformGrid>
</Border>
</TabItem>
<TabItem Header="Lista finestre"
Style="{StaticResource TabItem.EstimationDetail}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<Button Content="Nuova finestra"
Command="{Binding NewWindow_Command}"
Style="{StaticResource Button.EstimationDetail.WindowList}"/>
<Button Content="Nuova portafinestra"
Command="{Binding NewWindow_Command}"
Style="{StaticResource Button.EstimationDetail.WindowList}"/>
<Button Content="Nuova persiana"
Command="{Binding NewWindow_Command}"
Style="{StaticResource Button.EstimationDetail.WindowList}"/>
</StackPanel>
<DataGrid Grid.Row="1"
ItemsSource="{Binding WindowList}"
SelectedItem="{Binding SelWindow}"
AutoGenerateColumns="False"
CanUserDeleteRows="False"
CanUserResizeRows="False"
SelectionMode="Single"
SelectionUnit="FullRow"
CanUserSortColumns="False"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
HorizontalGridLinesBrush="Transparent"
VerticalGridLinesBrush="Transparent"
ColumnHeaderHeight="32"
HeadersVisibility="Column"
FontSize="12"
FontFamily="/Resources/Fonts/#Roboto"
FontWeight="Regular"
RowHeight="32"
BorderThickness="0">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="{StaticResource EgtWindow.DarkBlue}"/>
<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}"/>
<DataGridTextColumn Header="Nome"
Binding="{Binding sName}"
Width="1*"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn}"/>
<DataGridTextColumn Header="Larghezza"
Binding="{Binding dWidth}"
Width="1*"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn}"/>
<DataGridTextColumn Header="Altezza"
Binding="{Binding dHeight}"
Width="1*"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn}"/>
<DataGridTextColumn Header="Immagine"
Binding="{Binding sImage}"
Width="1*"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn}"/>
<DataGridTextColumn Header="Legno"
Binding="{Binding sWoodType}"
Width="1*"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn}"/>
<DataGridTextColumn Header="Colore"
Binding="{Binding sColor}"
Width="1*"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn}"/>
<DataGridTextColumn Header="Vetro"
Binding="{Binding sGlass}"
Width="1*"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn}"/>
</DataGrid.Columns>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<EventSetter Event="MouseDoubleClick" Handler="Row_MouseDoubleClick"/>
</Style>
</DataGrid.RowStyle>
</DataGrid>
</Grid>
</TabItem>
<TabItem Header="Costo"
Style="{StaticResource TabItem.EstimationDetail}">
</TabItem>
<TabItem Header="Stampa preventivo"
Style="{StaticResource TabItem.EstimationDetail}">
</TabItem>
</TabControl>
<StackPanel Grid.Row="1"
Orientation="Horizontal"
HorizontalAlignment="Right"
Margin="10">
<!--<Button Content="&lt;"
Command="{Binding Ok_Command}"/>
<Button Content=">"
Command="{Binding Ok_Command}"/>-->
<Button Content="Ok"
Command="{Binding Ok_Command}"
Margin="0,0,10,0"
Style="{StaticResource Button.Confirm}"/>
<Button Content="Annulla"
Command="{Binding Cancel_Command}"
Style="{StaticResource Button.Confirm}"/>
</StackPanel>
</Grid>
@@ -0,0 +1,26 @@
Public Class EstimationDetailPageV
Private WithEvents m_EstimationDetailPageVM As EstimationDetailPageVM
Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
m_EstimationDetailPageVM = New EstimationDetailPageVM
Me.DataContext = m_EstimationDetailPageVM
End Sub
Private Sub Row_MouseDoubleClick(sender As Object, e As MouseButtonEventArgs)
If IsNothing(sender) OrElse TypeOf sender IsNot DataGridRow Then
Return
End If
Dim SelDataGridRow As DataGridRow = DirectCast(sender, DataGridRow)
If IsNothing(SelDataGridRow.DataContext) Then Return
m_EstimationDetailPageVM.OpenWindow()
e.Handled = True
End Sub
End Class
@@ -0,0 +1,540 @@
Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtWPFLib5
Imports Newtonsoft.Json
Imports EgtUILib
Imports System.Windows.Forms
Public Class EstimationDetailPageVM
Inherits VMBase
Public Enum EstimationDetailPages
GENERAL = 0
BILLING = 1
WINDOWDEFAULT = 2
WINDOWLIST = 3
PRICING = 4
PRINT = 5
End Enum
Private m_CurrEstimation As Estimation
Public ReadOnly Property CurrEstimation As Estimation
Get
Return m_CurrEstimation
End Get
End Property
Friend Sub SetCurrEstimation(value As Estimation)
m_CurrEstimation = value
NotifyPropertyChanged(NameOf(SelProfile))
NotifyPropertyChanged(NameOf(SelWoodType))
NotifyPropertyChanged(NameOf(SelColor))
NotifyPropertyChanged(NameOf(SelGlass))
NotifyPropertyChanged(NameOf(SelFrameConfiguration))
NotifyPropertyChanged(NameOf(SelSashConfiguration))
NotifyPropertyChanged(NameOf(WindowList))
End Sub
Private m_SelPage As EstimationDetailPages
Public Property SelPage As Integer
Get
Return m_SelPage
End Get
Set(value As Integer)
SetSelPage(value)
End Set
End Property
Friend Sub SetSelPage(Page As EstimationDetailPages)
Dim bOk As Boolean = True
' Esco dallo stato corrente
Select Case m_SelPage
Case EstimationDetailPages.GENERAL
'bOk = ExitHOME()
Case EstimationDetailPages.BILLING
'bOk = ExitESTIMATING()
Case EstimationDetailPages.WINDOWDEFAULT
' bOk = ExitPRODUCING()
Case EstimationDetailPages.WINDOWLIST
'bOk = ExitDESIGNING()
End Select
If bOk Then
' Entro nel nuovo stato
m_SelPage = Page
Select Case m_SelPage
Case EstimationDetailPages.GENERAL
'bOk = InitHOME()
Case EstimationDetailPages.BILLING
'bOk = InitESTIMATING()
Case EstimationDetailPages.WINDOWDEFAULT
'bOk = InitPRODUCING()
Case EstimationDetailPages.WINDOWLIST
End Select
End If
NotifyPropertyChanged(NameOf(SelPage))
End Sub
#Region "Window Parameters"
Private m_ProfileList As New List(Of String)
Public ReadOnly Property ProfileList As List(Of String)
Get
Return m_ProfileList
End Get
End Property
Public Property SelProfile As String
Get
If IsNothing(m_CurrEstimation) Then Return ""
Return m_CurrEstimation.Profile
End Get
Set(value As String)
m_CurrEstimation.Profile = value
End Set
End Property
Private m_WoodTypeList As New List(Of String)
Public ReadOnly Property WoodTypeList As List(Of String)
Get
Return m_WoodTypeList
End Get
End Property
Private m_SelWoodType As String
Public Property SelWoodType As String
Get
If IsNothing(m_CurrEstimation) Then Return ""
Return m_CurrEstimation.WoodType
End Get
Set(value As String)
m_CurrEstimation.WoodType = value
End Set
End Property
Private m_ColorList As New List(Of String)
Public ReadOnly Property ColorList As List(Of String)
Get
Return m_ColorList
End Get
End Property
Private m_SelColor As String
Public Property SelColor As String
Get
If IsNothing(m_CurrEstimation) Then Return ""
Return m_CurrEstimation.Color
End Get
Set(value As String)
m_CurrEstimation.Color = value
End Set
End Property
Private m_GlassList As New List(Of String)
Public ReadOnly Property GlassList As List(Of String)
Get
Return m_GlassList
End Get
End Property
Private m_SelGlass As String
Public Property SelGlass As String
Get
If IsNothing(m_CurrEstimation) Then Return ""
Return m_CurrEstimation.Glass
End Get
Set(value As String)
m_CurrEstimation.Glass = value
End Set
End Property
Private m_FrameConfigurationList As New List(Of String)
Public ReadOnly Property FrameConfigurationList As List(Of String)
Get
Return m_FrameConfigurationList
End Get
End Property
Private m_SelFrameConfiguration As String
Public Property SelFrameConfiguration As String
Get
If IsNothing(m_CurrEstimation) Then Return ""
Return m_CurrEstimation.FrameConfiguration
End Get
Set(value As String)
m_CurrEstimation.FrameConfiguration = value
End Set
End Property
Private m_SashConfigurationList As New List(Of String)
Public ReadOnly Property SashConfigurationList As List(Of String)
Get
Return m_SashConfigurationList
End Get
End Property
Private m_SelSashConfiguration As String
Public Property SelSashConfiguration As String
Get
If IsNothing(m_CurrEstimation) Then Return ""
Return m_CurrEstimation.SashConfiguration
End Get
Set(value As String)
m_CurrEstimation.SashConfiguration = value
End Set
End Property
Public ReadOnly Property WindowList As ObservableCollection(Of WindowRow)
Get
If IsNothing(m_CurrEstimation) Then Return New ObservableCollection(Of WindowRow)
Return m_CurrEstimation.WindowList
End Get
End Property
Private m_SelWindow As WindowRow
Public Property SelWindow As WindowRow
Get
Return m_SelWindow
End Get
Set(value As WindowRow)
m_SelWindow = value
End Set
End Property
#End Region
' Definizione comandi
Private m_cmdNewWindow As ICommand
Private m_cmdOk As ICommand
Private m_cmdCancel As ICommand
Sub New()
Map.SetRefEstimationDetailPageVM(Me)
' carico lista profili
Dim ProfileFileList() As String = Directory.GetFiles(Map.refMainWindowVM.MainWindowM.sProfileDir)
For Each ProfileFile In ProfileFileList
m_ProfileList.Add(Path.GetFileNameWithoutExtension(ProfileFile))
Next
' carico lista tipi di legno
m_WoodTypeList.Add("Pino")
m_WoodTypeList.Add("Abete")
m_WoodTypeList.Add("Faggio")
m_WoodTypeList.Add("Castagno")
m_WoodTypeList.Add("Quercia")
' carico lista colori
m_ColorList.Add("Trasparente")
m_ColorList.Add("Bianco")
m_ColorList.Add("Marrone")
' carico lista vetri
m_GlassList.Add("Trasparente")
m_GlassList.Add("Bianco")
m_GlassList.Add("Marrone")
' carico lista configurazioni frame
m_FrameConfigurationList.Add("Orizzontale")
m_FrameConfigurationList.Add("Verticale")
m_FrameConfigurationList.Add("45Deg")
' carico lista configurazioni sash
m_SashConfigurationList.Add("Orizzontale")
m_SashConfigurationList.Add("Verticale")
m_SashConfigurationList.Add("45Deg")
End Sub
Friend Function InitEstimationDetailPage() As Boolean
'If IsNothing(m_CurrEstimation) Then
' ' devo creare nuovo preventivo
' Dim FolderList() As String = Directory.GetDirectories(Map.refMainWindowVM.MainWindowM.sEstimationDir)
' Dim EstimationIndex As Integer = 0
' If FolderList.Count > 0 Then
' EstimationIndex = FolderList.Max(Of Integer)(Function(x) Integer.Parse(Path.GetFileNameWithoutExtension(x)))
' End If
' Directory.CreateDirectory(Map.refMainWindowVM.MainWindowM.sEstimationDir & "\" & (EstimationIndex + 1).ToString())
'Else
'End If
Return True
End Function
'Private Function WriteJsonGenWinParam(FilePath As String) As Boolean
' Dim GenWinParam As New JsonGenWinParam(m_SelProfile, m_SelWoodType, m_SelColor, m_SelGlass, m_SelFrameConfiguration, m_SelSashConfiguration)
' Dim WinList As New List(Of JsonWindowRow)
' For Each Window In m_WindowList
' WinList.Add(New JsonWindowRow(Window.nId, Window.sName, Window.dWidth, Window.dHeight, Window.sImage, Window.sWoodType, Window.sColor, Window.sGlass))
' Next
' Dim JsonFromWindow As String = JsonConvert.SerializeObject(GenWinParam, Formatting.Indented)
' If File.Exists(FilePath) Then
' Try
' File.Delete(FilePath)
' Catch ex As Exception
' EgtOutLog("Error! Impossible deleting file!")
' Return False
' End Try
' End If
' File.WriteAllText(FilePath, JsonFromWindow)
' Return True
'End Function
'Private Function ReadJsonGenWinParam(FilePath As String) As Boolean
' If Not File.Exists(FilePath) Then Return False
' Dim sReadedFile As String = File.ReadAllText(FilePath)
' Dim WindowFromJson As JsonGenWinParam = JsonConvert.DeserializeObject(Of JsonGenWinParam)(sReadedFile)
' m_SelProfile = WindowFromJson.SelProfile
' m_SelWoodType = WindowFromJson.SelWoodType
' m_SelColor = WindowFromJson.SelColor
' m_SelGlass = WindowFromJson.SelGlass
' m_SelFrameConfiguration = WindowFromJson.SelFrameConfiguration
' m_SelSashConfiguration = WindowFromJson.SelSashConfiguration
' NotifyPropertyChanged(NameOf(SelProfile))
' NotifyPropertyChanged(NameOf(SelWoodType))
' NotifyPropertyChanged(NameOf(SelColor))
' NotifyPropertyChanged(NameOf(SelGlass))
' NotifyPropertyChanged(NameOf(SelFrameConfiguration))
' NotifyPropertyChanged(NameOf(SelSashConfiguration))
' Return True
'End Function
Friend Function NewWindowId() As Integer
Dim nId As Integer = 0
If m_CurrEstimation.WindowList.Count > 0 Then
nId = m_CurrEstimation.WindowList.Max(Function(x) x.nId)
End If
Return nId + 10
End Function
Friend Function AddWindow(nId As Integer) As Boolean
m_CurrEstimation.WindowList.Add(New WindowRow(nId, "", 0, 0, "", "", "", ""))
NotifyPropertyChanged(NameOf(WindowList))
Return True
End Function
Friend Sub OpenWindow()
Dim NewWindowWndVM As New NewWindowWndVM
Dim NewWindowWnd As New NewWindowWndV(Application.Current.MainWindow, NewWindowWndVM)
NewWindowWndVM.Init(SelWindow.nId)
NewWindowWnd.ShowDialog()
End Sub
#Region "COMMANDS"
#Region "NewWindow"
Public ReadOnly Property NewWindow_Command As ICommand
Get
If m_cmdNewWindow Is Nothing Then
m_cmdNewWindow = New Command(AddressOf NewWindow)
End If
Return m_cmdNewWindow
End Get
End Property
Public Sub NewWindow(nPage As Integer)
' apro finestra con lista dei template
Dim NewWindowWndVM As New NewWindowWndVM
Dim NewWindowWnd As New NewWindowWndV(Application.Current.MainWindow, NewWindowWndVM)
NewWindowWndVM.Init(0)
NewWindowWnd.ShowDialog()
End Sub
#End Region ' NewWindow
#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(nPage As Integer)
' salvo preventivo
Estimation.WriteEstimation(m_CurrEstimation)
' torno in lista preventivi
Map.refCRMPageVM.SetSelPage(CRMPages.ESTIMATIONLIST)
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(nPage As Integer)
' elimino preventivo
' torno in lista preventivi
Map.refCRMPageVM.SetSelPage(CRMPages.ESTIMATIONLIST)
End Sub
#End Region ' Cancel
#End Region ' COMMANDS
End Class
Public Class TemplateRow
Private m_nId As Integer
Public ReadOnly Property nId As Integer
Get
Return m_nId
End Get
End Property
Private m_sName As String
Public ReadOnly Property sName As String
Get
Return m_sName
End Get
End Property
Private m_dWidth As Double
Public ReadOnly Property dWidth As Double
Get
Return m_dWidth
End Get
End Property
Private m_dHeight As Double
Public ReadOnly Property dHeight As Double
Get
Return m_dHeight
End Get
End Property
Private m_sImagePath As String
Public ReadOnly Property sImagePath As String
Get
Return m_sImagePath
End Get
End Property
Sub New(nId As Integer, sName As String, dWidth As Double, dHeight As Double)
m_nId = nId
m_sName = sName
m_dWidth = dWidth
m_dHeight = dHeight
m_sImagePath = Map.refMainWindowVM.MainWindowM.sTemplateDir & "\" & nId & ".png"
End Sub
End Class
Public Class EstimationRow
Private m_nId As Integer
Public ReadOnly Property nId As Integer
Get
Return m_nId
End Get
End Property
Private m_sName As String
Public ReadOnly Property sName As String
Get
Return m_sName
End Get
End Property
Private m_sWoodType As String
Public ReadOnly Property sWoodType As String
Get
Return m_sWoodType
End Get
End Property
Private m_sColor As String
Public ReadOnly Property sColor As String
Get
Return m_sColor
End Get
End Property
Private m_sGlass As String
Public ReadOnly Property sGlass As String
Get
Return m_sGlass
End Get
End Property
Sub New(nId As Integer)
m_nId = nId
End Sub
End Class
Public Class WindowRow
Private m_nId As Integer
Public ReadOnly Property nId As Integer
Get
Return m_nId
End Get
End Property
Private m_sName As String
Public ReadOnly Property sName As String
Get
Return m_sName
End Get
End Property
Private m_dWidth As Double
Public ReadOnly Property dWidth As Double
Get
Return m_dWidth
End Get
End Property
Private m_dHeight As Double
Public ReadOnly Property dHeight As Double
Get
Return m_dHeight
End Get
End Property
Private m_sImage As String
Public ReadOnly Property sImage As String
Get
Return m_sImage
End Get
End Property
Private m_sWoodType As String
Public ReadOnly Property sWoodType As String
Get
Return m_sWoodType
End Get
End Property
Private m_sColor As String
Public ReadOnly Property sColor As String
Get
Return m_sColor
End Get
End Property
Private m_sGlass As String
Public ReadOnly Property sGlass As String
Get
Return m_sGlass
End Get
End Property
Sub New(nId As Integer, sName As String, dWidth As Double, dHeight As Double, sImage As String, sWoodType As String, sColor As String, sGlass As String)
m_nId = nId
m_sName = sName
m_dWidth = dWidth
m_dHeight = dHeight
m_sImage = sImage
m_sWoodType = sWoodType
m_sColor = sColor
m_sGlass = sGlass
End Sub
End Class
@@ -0,0 +1,74 @@
<Grid x:Class="EstimationListPageV"
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:EgtWindowMaker"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid.RowDefinitions>
<!--<RowDefinition Height="Auto"/>-->
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<!--<StackPanel Orientation="Horizontal">
<Button Content="Apri"
Command="{Binding OpenEstimation_Command}"/>
</StackPanel>-->
<DataGrid Grid.Row="1"
ItemsSource="{Binding EstimationList}"
SelectedItem="{Binding SelEstimation}"
AutoGenerateColumns="False"
CanUserDeleteRows="False"
CanUserResizeRows="False"
SelectionMode="Single"
SelectionUnit="FullRow"
CanUserSortColumns="False"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
HorizontalGridLinesBrush="Transparent"
VerticalGridLinesBrush="Transparent"
ColumnHeaderHeight="32"
HeadersVisibility="Column"
FontSize="12"
FontFamily="/Resources/Fonts/#Roboto"
FontWeight="Regular"
RowHeight="32"
BorderThickness="0">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="{StaticResource EgtWindow.DarkBlue}"/>
<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, Mode=OneWay}"
Width="Auto"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn}"/>
<DataGridTextColumn Header="Nome"
Binding="{Binding sName, Mode=OneWay}"
Width="200"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn}"/>
<DataGridTextColumn Header="Legno"
Binding="{Binding sWoodType, Mode=OneWay}"
Width="200"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn}"/>
<DataGridTextColumn Header="Colore"
Binding="{Binding sColor, Mode=OneWay}"
Width="200"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn}"/>
<DataGridTextColumn Header="Vetro"
Binding="{Binding sGlass, Mode=OneWay}"
Width="200"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn}"/>
</DataGrid.Columns>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<EventSetter Event="MouseDoubleClick" Handler="Row_MouseDoubleClick"/>
</Style>
</DataGrid.RowStyle>
</DataGrid>
</Grid>
@@ -0,0 +1,25 @@
Public Class EstimationListPageV
Private WithEvents m_EstimationListPageVM As EstimationListPageVM
Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
m_EstimationListPageVM = New EstimationListPageVM
Me.DataContext = m_EstimationListPageVM
End Sub
Private Sub Row_MouseDoubleClick(sender As Object, e As MouseButtonEventArgs)
If IsNothing(sender) OrElse TypeOf sender IsNot DataGridRow Then
Return
End If
Dim SelDataGridRow As DataGridRow = DirectCast(sender, DataGridRow)
If IsNothing(SelDataGridRow.DataContext) Then Return
m_EstimationListPageVM.OpenEstimation()
e.Handled = True
End Sub
End Class
@@ -0,0 +1,92 @@
Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtWPFLib5
Public Class EstimationListPageVM
Inherits VMBase
Private m_EstimationList As New ObservableCollection(Of EstimationRow)
Public ReadOnly Property EstimationList As ObservableCollection(Of EstimationRow)
Get
Return m_EstimationList
End Get
End Property
Private m_SelEstimation As EstimationRow
Public Property SelEstimation As EstimationRow
Get
Return m_SelEstimation
End Get
Set(value As EstimationRow)
m_SelEstimation = value
End Set
End Property
' Definizione comandi
Private m_cmdOpenEstimation As ICommand
Sub New()
Map.SetRefEstimationListPageVM(Me)
End Sub
Friend Function InitEstimationListPage() As Boolean
'm_EstimationList.Clear()
'Dim FolderList() As String = Directory.GetDirectories(Map.refMainWindowVM.MainWindowM.sEstimationDir)
'For Each EstimationFolder In FolderList
' Dim nId As Integer = 0
' Integer.TryParse(Path.GetFileNameWithoutExtension(EstimationFolder), nId)
' m_EstimationList.Add(New EstimationRow(nId))
'Next
Return True
End Function
Friend Sub NewEstimation()
Dim nId As Integer = 0
If m_EstimationList.Count > 0 Then
nId = m_EstimationList.Max(Of Integer)(Function(x) x.nId)
End If
nId += 1
Dim NewEstimation As New EstimationRow(nId)
m_EstimationList.Add(NewEstimation)
Directory.CreateDirectory(Map.refMainWindowVM.MainWindowM.sEstimationDir & "\" & (nId).ToString())
m_SelEstimation = NewEstimation
Map.refEstimationDetailPageVM.SetCurrEstimation(New Estimation(nId))
End Sub
Friend Sub OpenEstimation()
Dim CurrEstimation As Estimation = Nothing
Estimation.ReadEstimation(m_SelEstimation.nId, CurrEstimation)
Map.refEstimationDetailPageVM.SetCurrEstimation(CurrEstimation)
Map.refCRMPageVM.SetSelPage(CRMPages.ESTIMATIONDETAIL)
End Sub
Friend Function ReadEstimationList() As Boolean
m_EstimationList.Clear()
Dim FolderList() As String = Directory.GetDirectories(Map.refMainWindowVM.MainWindowM.sEstimationDir)
For Each EstimationFolder In FolderList
Dim nId As Integer = 0
Integer.TryParse(Path.GetFileNameWithoutExtension(EstimationFolder), nId)
m_EstimationList.Add(New EstimationRow(nId))
Next
Return True
End Function
#Region "COMMANDS"
'#Region "OpenEstimation"
' Public ReadOnly Property OpenEstimation_Command As ICommand
' Get
' If m_cmdOpenEstimation Is Nothing Then
' m_cmdOpenEstimation = New Command(AddressOf OpenEstimation)
' End If
' Return m_cmdOpenEstimation
' End Get
' End Property
'#End Region ' OpenEstimation
#End Region ' COMMANDS
End Class
+25
View File
@@ -0,0 +1,25 @@
<UniformGrid x:Class="HomePageV"
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"
Columns="3"
HorizontalAlignment="Center"
VerticalAlignment="Center">
<UniformGrid.Resources>
<sys:Int32 x:Key="Estimating">1</sys:Int32>
<sys:Int32 x:Key="Producing">2</sys:Int32>
<sys:Int32 x:Key="Designing">3</sys:Int32>
</UniformGrid.Resources>
<Button Content="CRM"
Command="{Binding Page_Command}"
CommandParameter="{StaticResource Estimating}"
Style="{StaticResource Button.HomePage}"/>
<Button Content="CAD"
Command="{Binding Page_Command}"
CommandParameter="{StaticResource Designing}"
Style="{StaticResource Button.HomePage}"/>
<Button Content="CAM"
Command="{Binding Page_Command}"
CommandParameter="{StaticResource Producing}"
Style="{StaticResource Button.HomePage}"/>
</UniformGrid>
@@ -0,0 +1,3 @@
Public Class HomePageV
End Class
+30
View File
@@ -0,0 +1,30 @@
Imports EgtWPFLib5
Public Class HomePageVM
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.refMainWindowVM.SetSelPage(nPage)
End Sub
#End Region ' Page
#End Region ' COMMANDS
End Class
@@ -0,0 +1,21 @@
Public Class JsonEstimationDetail
Private m_JsonGenWinParam As JsonGenWinParam
Public ReadOnly Property JsonGenWinParam As JsonGenWinParam
Get
Return m_JsonGenWinParam
End Get
End Property
Private m_JsonWindowList As List(Of JsonWindowRow)
Public ReadOnly Property JsonWindowList As List(Of JsonWindowRow)
Get
Return m_JsonWindowList
End Get
End Property
Sub New(JsonGenWinParam As JsonGenWinParam, JsonWindowList As List(Of JsonWindowRow))
End Sub
End Class
+54
View File
@@ -0,0 +1,54 @@
Public Class JsonGenWinParam
Private m_SelProfile As String
Public ReadOnly Property SelProfile As String
Get
Return m_SelProfile
End Get
End Property
Private m_SelWoodType As String
Public ReadOnly Property SelWoodType As String
Get
Return m_SelWoodType
End Get
End Property
Private m_SelColor As String
Public ReadOnly Property SelColor As String
Get
Return m_SelColor
End Get
End Property
Private m_SelGlass As String
Public ReadOnly Property SelGlass As String
Get
Return m_SelGlass
End Get
End Property
Private m_SelFrameConfiguration As String
Public ReadOnly Property SelFrameConfiguration As String
Get
Return m_SelFrameConfiguration
End Get
End Property
Private m_SelSashConfiguration As String
Public ReadOnly Property SelSashConfiguration As String
Get
Return m_SelSashConfiguration
End Get
End Property
Sub New(SelProfile As String, SelWoodType As String, SelColor As String, SelGlass As String, SelFrameConfiguration As String, SelSashConfiguration As String)
m_SelProfile = SelProfile
m_SelWoodType = SelWoodType
m_SelColor = SelColor
m_SelGlass = SelGlass
m_SelFrameConfiguration = SelFrameConfiguration
m_SelSashConfiguration = SelSashConfiguration
End Sub
End Class
+70
View File
@@ -0,0 +1,70 @@
Public Class JsonWindowRow
Private m_nId As Integer
Public ReadOnly Property nId As Integer
Get
Return m_nId
End Get
End Property
Private m_sName As String
Public ReadOnly Property sName As String
Get
Return m_sName
End Get
End Property
Private m_dWidth As Double
Public ReadOnly Property dWidth As Double
Get
Return m_dWidth
End Get
End Property
Private m_dHeight As Double
Public ReadOnly Property dHeight As Double
Get
Return m_dHeight
End Get
End Property
Private m_sImage As String
Public ReadOnly Property sImage As String
Get
Return m_sImage
End Get
End Property
Private m_sWoodType As String
Public ReadOnly Property sWoodType As String
Get
Return m_sWoodType
End Get
End Property
Private m_sColor As String
Public ReadOnly Property sColor As String
Get
Return m_sColor
End Get
End Property
Private m_sGlass As String
Public ReadOnly Property sGlass As String
Get
Return m_sGlass
End Get
End Property
Sub New(nId As Integer, sName As String, dWidth As Double, dHeight As Double, sImage As String, sWoodType As String, sColor As String, sGlass As String)
m_nId = nId
m_sName = sName
m_dWidth = dWidth
m_dHeight = dHeight
m_sImage = sImage
m_sWoodType = sWoodType
m_sColor = sColor
m_sGlass = sGlass
End Sub
End Class
+374
View File
@@ -0,0 +1,374 @@
Imports System.Threading
Imports System.Math
Imports EgtUILib
Imports EgtWPFLib5
Public Class MainWindowM
#Region "FIELDS"
' massimo numero di istanze del programma ammesse
Const MAX_INST As Integer = 32
Private m_objMutex As Mutex
Private m_sDataRoot As String = String.Empty
Friend ReadOnly Property sDataRoot As String
Get
Return m_sDataRoot
End Get
End Property
Private m_sDataDir As String = String.Empty
Friend ReadOnly Property sDataDir As String
Get
Return m_sDataDir
End Get
End Property
Private m_sConfigDir As String = String.Empty
Public ReadOnly Property sConfigDir As String
Get
Return m_sConfigDir
End Get
End Property
Private m_sBaseDir As String
Public ReadOnly Property sBaseDir As String
Get
Return m_sBaseDir
End Get
End Property
Private m_sProfileDir As String
Public ReadOnly Property sProfileDir As String
Get
Return m_sProfileDir
End Get
End Property
Private m_sTemplateDir As String
Public ReadOnly Property sTemplateDir As String
Get
Return m_sTemplateDir
End Get
End Property
Private m_sEstimationDir As String
Public ReadOnly Property sEstimationDir As String
Get
Return m_sEstimationDir
End Get
End Property
Private m_nDebug As Integer = 0
Public ReadOnly Property DebugLevel As Integer
Get
Return m_nDebug
End Get
End Property
Private m_bFirstInstance As Boolean = False
Friend ReadOnly Property bFirstInstance As Boolean
Get
Return m_bFirstInstance
End Get
End Property
Private m_nInstance As Integer = 0
Friend ReadOnly Property nInstance As Integer
Get
Return m_nInstance
End Get
End Property
Private m_nUserLevel As Integer = 1
Friend ReadOnly Property nUserLevel As Integer
Get
Return m_nUserLevel
End Get
End Property
Private m_nKeyLevel As Integer = 0
Friend ReadOnly Property nKeyLevel As Integer
Get
Return m_nKeyLevel
End Get
End Property
Private m_nKeyOptions As UInteger = 0
Friend ReadOnly Property nKeyOptions As Integer
Get
Return m_nKeyOptions
End Get
End Property
Friend ReadOnly Property sVersion As String
Get
Return My.Application.Info.Version.Major.ToString() & "." &
My.Application.Info.Version.Minor.ToString() &
(ChrW(97 - 1 + My.Application.Info.Version.Build)).ToString() &
My.Application.Info.Version.Revision.ToString()
End Get
End Property
Private m_s3dPrintingDir As String
Friend ReadOnly Property s3dPrintingDir As String
Get
Return m_s3dPrintingDir
End Get
End Property
Private m_sMaterialsDir As String
Friend ReadOnly Property sMaterialsDir As String
Get
Return m_sMaterialsDir
End Get
End Property
Private m_sTempDir As String
Friend ReadOnly Property sTempDir As String
Get
Return m_sTempDir
End Get
End Property
Private m_sMachinesRoot As String
Friend ReadOnly Property sMachinesRoot As String
Get
Return m_sMachinesRoot
End Get
End Property
Private m_sToolMakersDir As String
Friend ReadOnly Property sToolMakersDir As String
Get
Return m_sToolMakersDir
End Get
End Property
Private m_sResourcesRoot As String
Friend ReadOnly Property sResourcesRoot As String
Get
Return m_sResourcesRoot
End Get
End Property
Private m_sLogFile As String
Friend ReadOnly Property sLogFile As String
Get
Return m_sLogFile
End Get
End Property
#End Region ' FIELDS
#Region "CONSTRUCTOR"
Sub New()
InitializeEgtEnvironment()
End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
Private Sub InitializeEgtEnvironment()
'' Abilito drag and drop
'Me.AllowDrop = True
' Impostazione path radice per i dati
m_sDataRoot = System.AppDomain.CurrentDomain.BaseDirectory
If EgtUILib.GetPrivateProfileString(S_DATA, K_DATAROOT, "", m_sDataRoot, m_sDataRoot & "\" & DAT_FILE_NAME) = 0 Then
m_sDataRoot = System.AppDomain.CurrentDomain.BaseDirectory
End If
' Impostazione direttorio di configurazione
m_sConfigDir = m_sDataRoot & "\" & CONF_DIR
' Impostazione direttorio per file temporanei
m_sTempDir = m_sDataRoot & "\" & TEMP_DIR
' Impostazione path Ini file
IniFile.m_sIniFile = m_sConfigDir & "\" & INI_FILE_NAME
' Impostazione path resources dir
m_sResourcesRoot = m_sDataRoot & "\" & RES_DIR
' Impostazione path machinings e materials dir
m_sMaterialsDir = m_sDataRoot & "\" & MATERIALS_DIR
' Impostazione direttorio per le macchine
If GetMainPrivateProfileString(S_MACH, K_MACHINESDIR, "", m_sMachinesRoot) = 0 Then
m_sMachinesRoot = m_sDataRoot & "\" & MACHINES_DFL_DIR
End If
' Impostazione direttorio base dei lua
If GetMainPrivateProfileString(S_WINDOW, K_BASEDIR, "", m_sBaseDir) = 0 Then
m_sBaseDir = m_sDataRoot & "\" & WINDOW_DIR
End If
' Impostazione direttorio profili
If GetMainPrivateProfileString(S_WINDOW, K_PROFILEDIR, "", m_sProfileDir) = 0 Then
m_sProfileDir = m_sDataRoot & "\" & PROFILES_DIR
End If
' impostazione direttorio template
If GetMainPrivateProfileString(S_WINDOW, K_TEMPLATEDIR, "", m_sTemplateDir) = 0 Then
m_sTemplateDir = m_sDataRoot & "\" & TEMPLATE_DIR
End If
' impostazione direttorio offerte
If GetMainPrivateProfileString(S_WINDOW, K_ESTIMATIONDIR, "", m_sEstimationDir) = 0 Then
m_sEstimationDir = m_sDataRoot & "\" & ESTIMATIONS_DIR
End If
' Verifico indice di istanza
ManageInstance()
' Imposto tipo di chiave
EgtSetLockType(KEY_TYPE.HW)
' Leggo e imposto chiave di protezione
Dim sLicFileName As String = String.Empty
GetMainPrivateProfileString(S_GENERAL, K_LICENCE, LIC_FILE_NAME, sLicFileName)
Dim sLicFile As String = m_sConfigDir & "\" & sLicFileName
Dim sKey As String = String.Empty
EgtUILib.GetPrivateProfileString(S_LICENCE, K_KEY, "", sKey, sLicFile)
EgtSetKey(sKey)
' Impostazioni per chiave di rete
Dim bNetKey As Boolean = ( GetMainPrivateProfileInt( S_GENERAL, K_NETKEY, 0) = 1)
EgtSetNetHwKey( bNetKey)
Dim sLockId As String = ""
EgtUILib.GetPrivateProfileString( S_LICENCE, K_LOCKID, "", sLockId, sLicFile)
If Not String.IsNullOrEmpty( sLockId) Then
EgtSetLockId( sLockId)
End If
' Recupero livello e opzioni della chiave
Dim bKey As Boolean = EgtGetKeyLevel(3279, 2512, 1, m_nKeyLevel) And
EgtGetKeyOptions(3279, 2512, 1, m_nKeyOptions)
' Inizializzazione generale di EgtInterface
m_nDebug = GetMainPrivateProfileInt(S_GENERAL, K_DEBUG, 0)
m_sLogFile = m_sTempDir & "\" & GENLOG_FILE_NAME.Replace("#", m_nInstance.ToString())
Dim sLogMsg As String = "User " & Environment.MachineName & "\" & Environment.UserName & " (" & m_nInstance.ToString() & ")" & vbLf &
My.Application.Info.Title.ToString() & " ver. " &
My.Application.Info.Version.Major.ToString() &
"." & My.Application.Info.Version.Minor.ToString() &
(ChrW(97 - 1 + My.Application.Info.Version.Build)).ToString() &
My.Application.Info.Version.Revision.ToString()
EgtInit(m_nDebug, m_sLogFile, sLogMsg)
EgtSetTempDir(m_sTempDir)
EgtSetIniFile(IniFile.m_sIniFile)
' Leggo direttorio dei messaggi (se manca uso direttorio di configurazione)
Dim sMsgDir As String = String.Empty
If GetMainPrivateProfileString(S_GENERAL, K_MESSAGESDIR, "", sMsgDir) = 0 Then
sMsgDir = m_sConfigDir
End If
'' Inizializzo OptionModule
'OptionModule.InitOptionModule()
' Leggo lingua corrente
Dim sLanguage As String = String.Empty
GetMainPrivateProfileString(S_GENERAL, K_MESSAGES, "", sLanguage)
' Recupero nome file dei messaggi della lingua corrente
Dim sMsgName As String = "EgalTechIta.txt"
Dim nIndex As Integer = 1
While True
Dim ReadLanguage As Language = GetMainPrivateProfileLanguage(S_LANGUAGES, K_LANGUAGE & nIndex)
If IsNothing(ReadLanguage) Then Exit While
If String.Compare(ReadLanguage.Name, sLanguage, True) = 0 Then
sMsgName = ReadLanguage.FilePath
Exit While
End If
nIndex += 1
End While
' Leggo file messaggi
Dim sMsgFilePath As String = sMsgDir & "\" & sMsgName
If Not EgtLoadMessages(sMsgFilePath) Then
EgtOutLog("Error in EgtLoadMessages")
End If
' Leggo e imposto unità di misura per interfaccia utente
EgtSetUiUnits(GetMainPrivateProfileInt(S_SCENE, K_MMUNITS, 1) <> 0)
' Leggo e imposto livello utilizzatore
m_nUserLevel = Math.Min(m_nKeyLevel, GetMainPrivateProfileInt(S_GENERAL, K_USERLEVEL, 1))
' Imposto dir font Nfe e font default
Dim sNfeDir As String = String.Empty
GetMainPrivateProfileString(S_GEOMDB, K_NFEFONTDIR, "", sNfeDir)
Dim sDefFont As String = String.Empty
GetMainPrivateProfileString(S_GEOMDB, K_DEFAULTFONT, "", sDefFont)
EgtSetFont(sNfeDir, sDefFont)
' imposto dir di default per libreria Lua e lancio libreria di base
Dim sLuaLibsDir As String = String.Empty
GetMainPrivateProfileString(S_LUA, K_LIBSDIR, "", sLuaLibsDir)
EgtSetLuaLibs(sLuaLibsDir)
Dim sLuaBaseLib As String = String.Empty
GetMainPrivateProfileString(S_LUA, K_BASELIB, "EgtBase", sLuaBaseLib)
EgtLuaRequire(sLuaBaseLib)
' Info su opzioni chiave
EgtOutLog("KeyOptions : " & bKey.ToString() & " " & m_nKeyOptions.ToString())
End Sub
Private Sub ManageInstance()
Dim bCreated As Boolean
Try
m_objMutex = New Mutex(False, "Global\EgtWindowMaker", bCreated)
Catch
bCreated = False
End Try
m_bFirstInstance = bCreated
If bCreated Then
' Prima istanza
m_nInstance = 1
' Aggiorno stato istanze attive
WriteMainPrivateProfileString(S_GENERAL, K_INSTANCES, m_nInstance.ToString())
Else
' Leggo il massimo numero di istanze ammesse
Dim nMaxInst As Integer = GetMaxInstances()
' Cerco il primo indice di istanza libero
Dim nTmp As Integer = GetMainPrivateProfileInt(S_GENERAL, K_INSTANCES, 0)
m_nInstance = 1
Dim nMask As Integer = 1
While (nTmp And nMask) <> 0 And m_nInstance <= MAX_INST
m_nInstance += 1
nMask *= 2
End While
' Se l'indice supera il massimo
If m_nInstance > nMaxInst Then
' porto in primo piano la prima istanza
Dim bFound As Boolean = False
' processi del programma a 32 bit
Dim localProc As Process() = Process.GetProcessesByName("EgtWindowMakerR32")
For Each p As Process In localProc
If p.Id <> Process.GetCurrentProcess().Id Then
bFound = True
ShowWindow(p.MainWindowHandle, 1)
Exit For
End If
Next
' se non trovati processi a 32 bit provo a 64 bit
If Not bFound Then
localProc = Process.GetProcessesByName("EgtWindowMakerR64")
For Each p As Process In localProc
If p.Id <> Process.GetCurrentProcess().Id Then
bFound = True
ShowWindow(p.MainWindowHandle, SW.RESTORE)
Exit For
End If
Next
End If
' esco dal programma
End
End If
' Aggiorno stato istanze attive
nTmp += (1 << (m_nInstance - 1))
WriteMainPrivateProfileString(S_GENERAL, K_INSTANCES, nTmp.ToString())
End If
End Sub
Friend Function GetKeyOption(nKeyOpt As KEY_OPT) As Boolean
Return ((m_nKeyOptions And nKeyOpt) <> 0)
End Function
Friend Function GetMaxInstances() As Integer
' Leggo il massimo numero di istanze ammesse
Dim nMaxInst As Integer = GetMainPrivateProfileInt(S_GENERAL, K_MAXINST, 1)
Return 1 ' Max(1, Min(nMaxInst, MAX_INST))
End Function
Friend Sub Close()
' Terminazione generale di EgtInterface
EgtExit()
' Aggiorno istanze usate
m_objMutex.WaitOne(1000)
Dim nTmp As Integer = GetMainPrivateProfileInt(S_GENERAL, K_INSTANCES, 0)
nTmp -= (1 << (m_nInstance - 1))
WriteMainPrivateProfileString(S_GENERAL, K_INSTANCES, nTmp.ToString())
m_objMutex.ReleaseMutex()
' Rilascio mutex
If Not IsNothing(m_objMutex) Then m_objMutex.Close()
End Sub
#End Region ' METHODS
End Class
@@ -0,0 +1,38 @@
<Window x:Class="MainWindowV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
xmlns:local="clr-namespace:EgtWindowMaker">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<TabControl Grid.Row="1"
SelectedIndex="{Binding SelPage}"
Style="{StaticResource TabControl.NoHeader}">
<TabItem Header="Home">
<local:HomePageV DataContext="{StaticResource HomePageVM}"/>
</TabItem>
<TabItem Header="CRM">
<local:CRMPageV DataContext="{StaticResource CRMPageVM}"/>
</TabItem>
<TabItem Header="Producing">
<local:ProducingPageV DataContext="{StaticResource ProducingPageVM}"/>
</TabItem>
<TabItem Header="WindowManager">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<local:ProjManagerV DataContext="{StaticResource ProjManagerVM}"/>
<local:ManageWindowV Grid.Row="1"
DataContext="{StaticResource ManageWindowVM}"/>
</Grid>
</TabItem>
</TabControl>
</Grid>
</Window>
@@ -0,0 +1,66 @@
Imports EgtWPFLib5
Imports EgtUILib
Imports System.Windows.Interop
Class MainWindowV
Private m_MainWindowVM As MainWindowVM
#Region "CONSTRUCTOR"
Sub New()
m_MainWindowVM = New MainWindowVM
' Funzione che interpreta l'xaml
InitializeComponent()
Me.DataContext = m_MainWindowVM
' creo finestra della scena
AddHandler Me.Loaded, AddressOf MainWindowV_Loaded
AddHandler Me.ContentRendered, AddressOf MainWindowV_ContentRendered
AddHandler Me.Closing, AddressOf MainWindowV_Closing
AddHandler Me.KeyDown, AddressOf MainWindowV_KeyDown
End Sub
#End Region ' CONSTRUCTOR
#Region "EVENTS"
Private Sub MainWindowV_Loaded(sender As Object, e As RoutedEventArgs)
' Carico e imposto posizione finestra
WinPosFromIniToWindow(S_GENERAL, K_WINPLACE, Me)
' Recupero e imposto handle finestra principale
Dim hMainWnd As IntPtr = New WindowInteropHelper(Application.Current.MainWindow).Handle
EgtSetMainWindowHandle(hMainWnd)
End Sub
Private Sub MainWindowV_ContentRendered(sender As Object, e As EventArgs)
m_MainWindowVM.ContentRendered()
End Sub
Private Sub MainWindowV_Closing(sender As Object, e As System.ComponentModel.CancelEventArgs)
If (Keyboard.Modifiers And ModifierKeys.Alt) = ModifierKeys.Alt OrElse Keyboard.IsKeyDown(Key.F4) Then
e.Cancel = True
Return
End If
' Salvo posizione finestra (se non minimizzata)
If WindowState <> WindowState.Minimized Then
WinPosFromWindowToIni(Me, S_GENERAL, K_WINPLACE)
End If
End Sub
Private Sub MainWindowV_KeyDown(sender As Object, e As KeyEventArgs)
m_MainWindowVM.KeyDown(e.Key)
End Sub
Private Sub MainWindowV_Drop(sender As Object, e As DragEventArgs)
' Se drag di file
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
' Attivo il programma
Me.Activate()
' Recupero l'array di stringhe con i nomi del file
Dim sFiles() As String = DirectCast(e.Data.GetData(DataFormats.FileDrop), String())
End If
End Sub
#End Region ' EVENTS
End Class
+280
View File
@@ -0,0 +1,280 @@
Imports EgtUILib
Imports EgtWPFLib5
Imports System.IO
Imports System.Threading
Imports System.Windows.Threading
Public Class MainWindowVM
Inherits VMBase
' Riferimento al Model della MainWindow
Private m_MainWindowM As MainWindowM
Friend ReadOnly Property MainWindowM As MainWindowM
Get
Return m_MainWindowM
End Get
End Property
' Funzioni di callback per output in interfaccia da LUA
Private m_ProcEventsCallback As New ProcessEventsCallback(AddressOf ProcessEvents)
' Variabile che indica che il programma è stato avviato correttamente (sia la mappa che l'ambiente Egt)
Private m_bInitStatus As Boolean
Friend ReadOnly Property bInitStatus As Boolean
Get
Return m_bInitStatus
End Get
End Property
' Titolo
Public ReadOnly Property sTitle As String
Get
Return "EgtWindowMaker"
End Get
End Property
Public ReadOnly Property sProjectName As String
Get
Dim sFilePath As String = ""
EgtGetCurrFilePath(sFilePath)
If String.IsNullOrEmpty(sFilePath) Then
sFilePath = EgtMsg(MSG_TOPCOMMANDBAR + 1) & Map.refMainWindowVM.MainWindowM.nInstance.ToString()
Return sFilePath
Else
Return Path.GetFileNameWithoutExtension(sFilePath) & If(EgtGetModified(), "*", "")
End If
End Get
End Property
Public ReadOnly Property sProjectPath As String
Get
Dim sFilePath As String = ""
EgtGetCurrFilePath(sFilePath)
If String.IsNullOrEmpty(sFilePath) Then
sFilePath = EgtMsg(MSG_TOPCOMMANDBAR + 1) & Map.refMainWindowVM.MainWindowM.nInstance.ToString()
End If
Return sFilePath
End Get
End Property
Private m_MachinePanelVM As MachinePanelVM
Public ReadOnly Property MachinePanelVM As MachinePanelVM
Get
Return m_MachinePanelVM
End Get
End Property
Private m_SelPage As Pages
Public Property SelPage As Integer
Get
Return m_SelPage
End Get
Set(value As Integer)
SetSelPage(value)
End Set
End Property
Friend Sub SetSelPage(Page As Pages)
Dim bOk As Boolean = True
' Esco dallo stato corrente
Select Case m_SelPage
Case Pages.HOME
'bOk = ExitHOME()
Case Pages.ESTIMATING
'bOk = ExitESTIMATING()
Case Pages.PRODUCING
' bOk = ExitPRODUCING()
Case Pages.DESIGNING
'bOk = ExitDESIGNING()
End Select
If bOk Then
' Entro nel nuovo stato
m_SelPage = Page
Select Case m_SelPage
Case Pages.HOME
'bOk = InitHOME()
Case Pages.ESTIMATING
'bOk = InitESTIMATING()
bOk = Map.refCRMPageVM.InitCRMPage()
Case Pages.PRODUCING
'bOk = InitPRODUCING()
Case Pages.DESIGNING
'bOk = InitDESIGNING()
End Select
End If
NotifyPropertyChanged(NameOf(SelPage))
End Sub
' definizione comandi
Private m_cmdAboutBox As ICommand
Private m_cmdCloseApplication As ICommand
#Region "CONSTRUCTOR"
Sub New()
' Avvio l'inizializzazione della mappa passandogli il riferimento al MainWindowVM
Map.BeginInit(Me)
' Creo Model della MainWindow
m_MainWindowM = New MainWindowM
' inizializzo machine panel
m_MachinePanelVM = New MachinePanelVM
' Installo funzione gestione eventi per lua
EgtSetProcessEvents(m_ProcEventsCallback)
End Sub
#End Region ' CONSTRUCTOR
'#Region "METHODS"
Friend Sub ContentRendered()
End Sub
Friend Sub KeyDown(PressedKey As Key)
' ' Con ESC esco dall'azione corrente
' If PressedKey = Key.Escape Then
' ' resetto sempre input box a meno che non sia nelle ribs e stia creando il percorso
' If Not (Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso
' Not IsNothing(Map.refTopPanelVM.SelModifyMode) AndAlso
' ((Map.refTopPanelVM.SelModifyMode.ModifyMode = ModifyModes.RIBS AndAlso Map.refRibPanelVM.bIsCreatingPath) OrElse
' (Map.refTopPanelVM.SelModifyMode.ModifyMode = ModifyModes.SHELLNUMBER AndAlso Map.refShellNumberPanelVM.bIsCreatingPath))) Then
' Map.refControllerInputPanelVM.ResetInputBox()
' End If
' If Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso
' Not IsNothing(Map.refTopPanelVM.SelModifyMode) Then
' Dim nNewExtrusionLayerId As Integer = GDB_ID.NULL
' If Map.refTopPanelVM.SelModifyMode.ModifyMode = ModifyModes.RIBS Then
' ' cancello eventuali layer di modifica
' If Not IsNothing(Map.refTopPanelVM.SelPart) AndAlso Not Map.refRibPanelVM.bIsCreatingPath Then
' nNewExtrusionLayerId = EgtGetFirstNameInGroup(Map.refTopPanelVM.SelPart.nPartId, LAY_NEWEXTRUSION)
' If nNewExtrusionLayerId <> GDB_ID.NULL Then
' EgtErase(nNewExtrusionLayerId)
' End If
' Dim nNewRibLayerId As Integer = EgtGetFirstNameInGroup(Map.refTopPanelVM.SelPart.nPartId, LAY_NEWRIB)
' If nNewRibLayerId <> GDB_ID.NULL Then
' EgtErase(nNewRibLayerId)
' End If
' End If
' ' annullo trasparenza attivata durante edit rib
' If Not IsNothing(Map.refRibPanelVM.SelRib) Then
' 'EgtSetAlpha(Map.refRibPanelVM.SelRib.nExtrusionId, 100)
' End If
' ElseIf Map.refTopPanelVM.SelModifyMode.ModifyMode = ModifyModes.SHELLNUMBER Then
' ' cancello eventuali layer di modifica
' If Not IsNothing(Map.refTopPanelVM.SelPart) AndAlso Not Map.refShellNumberPanelVM.bIsCreatingPath Then
' nNewExtrusionLayerId = EgtGetFirstNameInGroup(Map.refTopPanelVM.SelPart.nPartId, LAY_NEWEXTRUSION)
' If nNewExtrusionLayerId <> GDB_ID.NULL Then
' EgtErase(nNewExtrusionLayerId)
' End If
' Dim nNewRibLayerId As Integer = EgtGetFirstNameInGroup(Map.refTopPanelVM.SelPart.nPartId, LAY_NEWRIB)
' If nNewRibLayerId <> GDB_ID.NULL Then
' EgtErase(nNewRibLayerId)
' End If
' End If
' ' annullo trasparenza attivata durante edit rib
' If Not IsNothing(Map.refShellNumberPanelVM.SelShellNumber) Then
' 'EgtSetAlpha(Map.refShellNumberPanelVM.SelShellNumber.nExtrusionId, 100)
' End If
' End If
' End If
' ' reset Azione corrente
' Map.refSceneHostVM.MainController.ResetStatus()
' ' se misura attiva, la disattivo
' If Map.refInstrumentPanelVM.GetDistIsChecked Then
' Map.refInstrumentPanelVM.SetGetDistance_IsChecked(False)
' End If
' ' pulisco output
' Map.refMyStatusBarVM.ClearOutputMessage()
' End If
End Sub
Private Function ProcessEvents(ByVal nProg As Integer, ByVal nPause As Integer) As Integer
' If Map.refSliceManagerVM.bCalculating OrElse Map.refSliceManagerVM.bCalcSolid Then
' Map.refSliceManagerVM.ProcessEvents(nProg, nPause)
' End If
' If Not IsNothing(Map.refImportLoadingWndVM) Then
' Map.refImportLoadingWndVM.ProcessEvents(nProg, nPause)
' End If
' Map.refMyStatusBarVM.ProcessEvents(nProg, nPause)
' Return 0
End Function
Friend Sub CloseApplication()
If (Keyboard.Modifiers And ModifierKeys.Alt) = ModifierKeys.Alt OrElse Keyboard.IsKeyDown(Key.F4) Then
Return
End If
'' gestisco la chiusura della simulazione
'If Map.refRightPanelVM.SelPanel = RightPanelVM.Panels.SIMULATION AndAlso Not IsNothing(Map.refSimulationPanelVM) Then
' Map.refSimulationPanelVM.MySimul.ResetSimulation()
'End If
' Gestisco eventuale file corrente modificato
Dim bOk As Boolean = True
'bOk = ProjFileVM.VerifyProjectModification(Map.refProjManagerVM.CurrProj, ProjectType.PROJ)
' se salvataggio annullato, rimango
If Not bOk Then Return
Dim bAllowClose As Boolean = Map.refSceneHostVM.MainController.ManageModified()
' Salvo impostazione macchina corrente
'Map.refMachinePanelVM.SaveCurrentMachine()
' Se non confermata chiusura, esco
If Not bAllowClose Then Return
' salvo modo di visualizzazione
WriteMainPrivateProfileString(S_SCENE, K_SHOWMODE, EgtGetShowMode().ToString())
' Salvo stato visualizzazione direzione curve
WriteMainPrivateProfileString(S_SCENE, K_CURVEDIR, If(EgtGetShowCurveDirection(), "1", "0"))
'' Salvo stato visualizzazione griglia
'WriteMainPrivateProfileString(S_GRID, K_SHOWGRID, If(Map.refMyStatusBarVM.bGridVisibility, "1", "0"))
' Termino il Model
m_MainWindowM.Close()
' Termino il programma
Application.Current.Shutdown()
End Sub
#Region "COMMANDS"
#Region "AboutBoxCommand"
' Returns a command that manage the MainWindow_Unloaded command
Public ReadOnly Property AboutBoxCommand() As ICommand
Get
If m_cmdAboutBox Is Nothing Then
m_cmdAboutBox = New Command(AddressOf AboutBox)
End If
Return m_cmdAboutBox
End Get
End Property
' Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
Public Sub AboutBox(ByVal param As Object)
'Dim AboutBoxWindow As New AboutBoxV
'AboutBoxWindow.Owner = Application.Current.MainWindow
'AboutBoxWindow.ShowDialog()
End Sub
#End Region ' AboutBoxCommand
#Region "CloseApplicationCommand"
' Returns a command that manage the MainWindow_Unloaded command
Public ReadOnly Property CloseApplicationCommand() As ICommand
Get
If m_cmdCloseApplication Is Nothing Then
m_cmdCloseApplication = New Command(AddressOf CloseApplication)
End If
Return m_cmdCloseApplication
End Get
End Property
' Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
Public Sub CloseApplication(ByVal param As Object)
'If Map.refSliceManagerVM.bCalculating Then
' MessageBox.Show("Impossible closing software! Wait end of calculation!", "Error", MessageBoxButton.OK, MessageBoxImage.Error)
' Return
'End If
CloseApplication()
End Sub
#End Region ' CloseApplicationCommand
#End Region ' COMMANDS
End Class
@@ -0,0 +1,420 @@
<Grid x:Class="ManageWindowV"
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"
xmlns:local="clr-namespace:EgtWindowMaker">
<Grid.Resources>
<local:AreaToSplitPageConverter x:Key="AreaToSplitPageConverter"/>
<local:OptionTypeToVisibilityConverter x:Key="OptionTypeToVisibilityConverter"/>
<sys:Double x:Key="Text">1</sys:Double>
<sys:Double x:Key="Lenght">2</sys:Double>
<sys:Double x:Key="Combo">3</sys:Double>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="400"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<TabControl Grid.Row="1"
TabStripPlacement="Left"
SelectedIndex="{Binding SelParamCathegoryIndex}">
<TabItem Header="General"
Style="{StaticResource TabItem.ManageWindow}">
<StackPanel Margin="10">
<UniformGrid Columns="2">
<TextBlock Text="Material"
Style="{StaticResource TextBlock.ManageWindow}"/>
<ComboBox ItemsSource="{Binding MaterialList}"
SelectedItem="{Binding SelMaterial}"
Margin="0,0,0,10"
Style="{StaticResource ComboBox.ManageWindow}"/>
<TextBlock Text="Profile"
Style="{StaticResource TextBlock.ManageWindow}"/>
<TextBox Text="{Binding CurrWindow.sProfilePath}"
Style="{StaticResource TextBox.ManageWindow}"/>
</UniformGrid>
</StackPanel>
</TabItem>
<TabItem Header="Frame"
Style="{StaticResource TabItem.ManageWindow}">
<StackPanel Margin="10">
<GroupBox Header="Shape &amp; Dimensions"
Margin="0,0,0,10">
<StackPanel Margin="10">
<ComboBox ItemsSource="{Binding SelArea.ShapeList}"
SelectedIndex="{Binding SelArea.SelShapeIndex}"
Margin="0,0,0,5"/>
<ItemsControl ItemsSource="{Binding SelArea.DimensionList}"
Margin="0,0,0,5">
<ItemsControl.ItemTemplate>
<DataTemplate>
<UniformGrid Columns="2"
Margin="0,5">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding nIndex}"/>
<TextBlock Text="{Binding sName}"/>
</StackPanel>
<TextBox Text="{Binding dValue}"/>
</UniformGrid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</GroupBox>
<GroupBox Header="Joints"
Margin="0,0,0,10">
<ItemsControl ItemsSource="{Binding SelArea.JointList}"
Padding="10,5">
<ItemsControl.ItemTemplate>
<DataTemplate>
<UniformGrid Columns="2"
Margin="0,5">
<TextBlock Text="{Binding nIndex}"/>
<ComboBox ItemsSource="{Binding JointTypeList}"
SelectedIndex="{Binding SelJointTypeIndex}"/>
</UniformGrid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</GroupBox>
<Expander IsExpanded="{Binding SelArea.BottomRail}"
Header="Bottom Rail"
Margin="0,0,0,10"
Style="{StaticResource Expander.CheckBoxHeader}">
<UniformGrid Columns="2"
Margin="0,5">
<TextBlock Text="Quantità"/>
<TextBox Text="{Binding SelArea.BottomRailQty}"/>
</UniformGrid>
</Expander>
<GroupBox Header="Threshold"
Padding="10,5"
Margin="0,0,0,10">
<StackPanel>
<ComboBox ItemsSource="{Binding DataContext.CurrWindow.ThresholdTypeList, RelativeSource={RelativeSource AncestorType={x:Type local:ManageWindowV}}}"
SelectedItem="{Binding SelThresholdType}"
Margin="0,5"/>
<ComboBox ItemsSource="{Binding DataContext.CurrWindow.ThresholdList, RelativeSource={RelativeSource AncestorType={x:Type local:ManageWindowV}}}"
SelectedItem="{Binding SelThreshold}"
Margin="0,5"/>
</StackPanel>
</GroupBox>
<Button Content="Calcola"
Command="{Binding ApplyFrame_Command}"
Style="{StaticResource Button.ManageWindow.LeftBar}"/>
</StackPanel>
</TabItem>
<!--<TabItem Header="Joint">
<StackPanel>
<ItemsControl ItemsSource="{Binding SelArea.JointList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<UniformGrid Columns="2">
<TextBlock Text="{Binding nIndex}"/>
<ComboBox ItemsSource="{Binding JointTypeList}"
SelectedIndex="{Binding SelJointTypeIndex}"/>
</UniformGrid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</TabItem>-->
<TabItem Header="Split &amp; Rail"
Style="{StaticResource TabItem.ManageWindow}">
<!--Oriz/Vert, Quota, ecc-->
<TabControl SelectedIndex="{Binding SelArea, Converter={StaticResource AreaToSplitPageConverter}}"
Margin="0"
Padding="0"
BorderThickness="0">
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Visibility" Value="Collapsed"/>
</Style>
</TabControl.ItemContainerStyle>
<TabItem>
<TextBlock Text="Select Area"
Style="{StaticResource TextBlock.ManageWindow.SelArea}"/>
</TabItem>
<TabItem>
<StackPanel Margin="10">
<TextBlock Text="Numero"
Margin="0,0,0,5"/>
<TextBox Text="{Binding SelArea.nSplitQty}"
Margin="0,0,0,10"/>
<UniformGrid Rows="1" Margin="0,0,0,5">
<TextBlock Text="Shape"
Style="{StaticResource TextBlock.ManageWindow}"/>
<ComboBox ItemsSource="{Binding SelArea.SplitShapeList}"
SelectedIndex="{Binding SelArea.SelSplitShapeIndex}"
Style="{StaticResource ComboBox.ManageWindow}"/>
</UniformGrid>
<ItemsControl ItemsSource="{Binding SelArea.SplitPositionList}"
Margin="0,0,0,10">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,5">
<TextBlock Text="Dimensione"
Margin="0,0,0,5"/>
<TextBox Text="{Binding dDimension}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<Button Content="Calcola"
Command="{Binding ApplySplit_Command}"
Margin="0,0,0,10"
Style="{StaticResource Button.ManageWindow.LeftBar}"/>
<Button Content="Elimina"
Command="{Binding DeleteArea_Command}"
Margin="0,0,0,10"
Style="{StaticResource Button.ManageWindow.LeftBar}"/>
</StackPanel>
</TabItem>
</TabControl>
<!--<StackPanel>
<UniformGrid Columns="2">
<TextBlock Text="Cerniere"/>
<TextBox Grid.Column="1" Text="{Binding dHeight}"/>
<TextBlock Text="Maniglia"/>
<TextBox Grid.Column="1" Text="{Binding dWidth}"/>
</UniformGrid>
</StackPanel>-->
</TabItem>
<TabItem Header="Sash"
Style="{StaticResource TabItem.ManageWindow}">
<TabControl SelectedIndex="{Binding SelArea, Converter={StaticResource AreaToSplitPageConverter}}"
Margin="0"
Padding="0"
BorderThickness="0">
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Visibility" Value="Collapsed"/>
</Style>
</TabControl.ItemContainerStyle>
<TabItem>
<TextBlock Text="Select Area"
Style="{StaticResource TextBlock.ManageWindow.SelArea}"/>
</TabItem>
<TabItem>
<StackPanel Margin="10">
<!--Quantita', ecc-->
<TextBlock Text="Numero"
Margin="0,0,0,5"/>
<TextBox Text="{Binding SelArea.nSashQty}"
Margin="0,0,0,10"/>
<TextBlock Text="Orientamento"
Margin="0,0,0,5"/>
<RadioButton Content="Verticale"
IsChecked="{Binding SelArea.bIsSashVertical}"
GroupName="Orientation"
Margin="0,0,0,5"/>
<RadioButton Content="Orizzontale"
GroupName="Orientation"
Margin="0,0,0,10"/>
<CheckBox Content="Measure Glass"
IsChecked="{Binding SelArea.bIsMeasureGlass}"
Margin="0,0,0,5"/>
<ItemsControl ItemsSource="{Binding SelArea.SashList}"
Margin="0,0,0,5">
<ItemsControl.ItemTemplate>
<DataTemplate>
<GroupBox Margin="0,5"
Padding="10">
<StackPanel>
<TextBlock Text="Tipo di apertura"
Margin="0,0,0,5"/>
<ComboBox ItemsSource="{Binding OpeningTypeList}"
SelectedItem="{Binding SelOpeningType}"
DisplayMemberPath="Name"
Margin="0,0,0,10"/>
<TextBlock Text="Dimensione"
Margin="0,0,0,5"/>
<TextBox Text="{Binding dDimension}"
Margin="0,0,0,5"/>
<RadioButton Content="Handle"
IsChecked="{Binding bHasHandle}"
GroupName="HandleGroup"/>
</StackPanel>
</GroupBox>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<GroupBox Header="Joints"
Margin="0,0,0,10">
<ItemsControl ItemsSource="{Binding SelArea.JointList}"
Padding="10,5">
<ItemsControl.ItemTemplate>
<DataTemplate>
<UniformGrid Columns="2"
Margin="0,5">
<TextBlock Text="{Binding nIndex}"/>
<ComboBox ItemsSource="{Binding JointTypeList}"
SelectedIndex="{Binding SelJointTypeIndex}"/>
</UniformGrid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</GroupBox>
<Expander IsExpanded="{Binding SelArea.BottomRail}"
Header="Bottom Rail"
Margin="0,0,0,10"
Style="{StaticResource Expander.CheckBoxHeader}">
<UniformGrid Columns="2"
Margin="0,5">
<TextBlock Text="Quantità"/>
<TextBox Text="{Binding SelArea.BottomRailQty}"/>
</UniformGrid>
</Expander>
<TextBlock Text="Modello ferramenta"
Margin="0,0,0,5"/>
<ComboBox ItemsSource="{Binding SelArea.HardwareList}"
SelectedItem="{Binding SelArea.SelHardware}"
DisplayMemberPath="sName"
Margin="0,0,0,10"/>
<Expander Header="Hardware Options"
Margin="0,0,0,10">
<ItemsControl ItemsSource="{Binding SelArea.HwdOptionList}"
Grid.IsSharedSizeScope="True"
Margin="0,5"
Padding="10">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Visibility="{Binding OptVisibility}"
Margin="0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="HdwOptCol"/>
<ColumnDefinition Width="1*" MinWidth="30"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding sDescription}"/>
<ComboBox Grid.Column="1"
ItemsSource="{Binding ValueList}"
SelectedValue="{Binding sValue}"
DisplayMemberPath="sDescription"
Visibility="{Binding Type, Converter={StaticResource OptionTypeToVisibilityConverter},
ConverterParameter={StaticResource Combo}}"/>
<TextBox Grid.Column="1"
Text="{Binding sValue}"
Visibility="{Binding Type, Converter={StaticResource OptionTypeToVisibilityConverter},
ConverterParameter={StaticResource Text}}"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Expander>
<!--<TextBlock Text="Altezza maniglia"/>
<TextBox Text="{Binding SelArea.dHandleHeight}"/>-->
<Button Content="Calcola"
Command="{Binding ApplySash_Command}"
Margin="0,0,0,10"
Style="{StaticResource Button.ManageWindow.LeftBar}"/>
<Button Content="Elimina"
Command="{Binding DeleteArea_Command}"
Margin="0,0,0,10"
Style="{StaticResource Button.ManageWindow.LeftBar}"/>
</StackPanel>
</TabItem>
</TabControl>
<!--<StackPanel>
<UniformGrid Columns="2">
<TextBlock Text="Cerniere"/>
<TextBox Grid.Column="1" Text="{Binding dHeight}"/>
<TextBlock Text="Maniglia"/>
<TextBox Grid.Column="1" Text="{Binding dWidth}"/>
</UniformGrid>
</StackPanel>-->
</TabItem>
<TabItem Header="Fill"
Style="{StaticResource TabItem.ManageWindow}">
<TabControl SelectedIndex="{Binding SelArea, Converter={StaticResource AreaToSplitPageConverter}}"
Margin="0"
Padding="0"
BorderThickness="0">
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Visibility" Value="Collapsed"/>
</Style>
</TabControl.ItemContainerStyle>
<TabItem>
<TextBlock Text="Select Area"
Style="{StaticResource TextBlock.ManageWindow.SelArea}"/>
</TabItem>
<TabItem>
<StackPanel Margin="10">
<UniformGrid Columns="1"
HorizontalAlignment="Center">
<RadioButton Content="Glass"
GroupName="FillType"
IsChecked="{Binding SelArea.bGlass_IsChecked}"
Margin="0,0,0,10"/>
<RadioButton Content="Wood"
GroupName="FillType"
IsChecked="{Binding SelArea.bWood_IsChecked}"
Margin="0,0,0,10"/>
</UniformGrid>
<Button Content="Calcola"
Command="{Binding ApplyFill_Command}"
Margin="0,0,0,10"
Style="{StaticResource Button.ManageWindow.LeftBar}"/>
<Button Content="Elimina"
Command="{Binding DeleteArea_Command}"
Margin="0,0,0,10"
Style="{StaticResource Button.ManageWindow.LeftBar}"/>
</StackPanel>
</TabItem>
</TabControl>
<!--<StackPanel>
<UniformGrid Columns="2">
<TextBlock Text="Cerniere"/>
<TextBox Grid.Column="1" Text="{Binding dHeight}"/>
<TextBlock Text="Maniglia"/>
<TextBox Grid.Column="1" Text="{Binding dWidth}"/>
</UniformGrid>
</StackPanel>-->
</TabItem>
<!--<TabItem Header="Hardware">
<StackPanel>
-->
<!--Quantita', ecc-->
<!--
<Button Content="Test"
Command="{Binding Read_Command}"/>
<Button Content="Test"
Command="{Binding Write_Command}"/>
</StackPanel>
</TabItem>-->
</TabControl>
</Grid>
<Grid Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<local:ShowPanelV DataContext="{StaticResource ShowPanelVM}"/>
<local:ViewPanelV DataContext="{StaticResource ViewPanelVM}"/>
<RadioButton Content="2D"
IsChecked="{Binding bIsShow2DOn}"
Margin="0,0,5,0"
Style="{StaticResource ToggleButton.ToolBar.DShowMode}"/>
<RadioButton Content="S3D"
IsChecked="{Binding bIsShowSimple3DOn}"
Margin="0,0,5,0"
Style="{StaticResource ToggleButton.ToolBar.DShowMode}"/>
<RadioButton Content="3D"
IsChecked="{Binding bIsShow3DOn}"
Margin="0,0,5,0"
Style="{StaticResource ToggleButton.ToolBar.DShowMode}"/>
<ToggleButton Content="Ferramenta"
IsChecked="{Binding HardwareShowMode}"
Style="{StaticResource ToggleButton.ToolBar.DShowMode}"/>
</StackPanel>
<local:SceneHostV Grid.Row="1"/>
</Grid>
</Grid>
@@ -0,0 +1,3 @@
Public Class ManageWindowV
End Class
File diff suppressed because it is too large Load Diff
+59
View File
@@ -0,0 +1,59 @@
Imports System
Imports System.Globalization
Imports System.Reflection
Imports System.Resources
Imports System.Runtime.InteropServices
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("EgtWindowMaker")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("Egalware s.r.l.")>
<Assembly: AssemblyProduct("EgtWindowMaker")>
<Assembly: AssemblyCopyright("Copyright © 2022-2023 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("7177afe1-3bd7-4f56-b4b0-be5f0ac7c7e2")>
' 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("2.6.1.1")>
<Assembly: AssemblyFileVersion("2.6.1.1")>
@@ -0,0 +1,121 @@
#If _MyType <> "Empty" Then
Namespace My
''' <summary>
''' Module used to define the properties that are available in the My Namespace for WPF
''' </summary>
''' <remarks></remarks>
<Global.Microsoft.VisualBasic.HideModuleName()> _
Module MyWpfExtension
Private s_Computer As New ThreadSafeObjectProvider(Of Global.Microsoft.VisualBasic.Devices.Computer)
Private s_User As New ThreadSafeObjectProvider(Of Global.Microsoft.VisualBasic.ApplicationServices.User)
Private s_Windows As New ThreadSafeObjectProvider(Of MyWindows)
Private s_Log As New ThreadSafeObjectProvider(Of Global.Microsoft.VisualBasic.Logging.Log)
''' <summary>
''' Returns the application object for the running application
''' </summary>
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")> _
Friend ReadOnly Property Application() As Application
Get
Return CType(Global.System.Windows.Application.Current, Application)
End Get
End Property
''' <summary>
''' Returns information about the host computer.
''' </summary>
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")> _
Friend ReadOnly Property Computer() As Global.Microsoft.VisualBasic.Devices.Computer
Get
Return s_Computer.GetInstance()
End Get
End Property
''' <summary>
''' Returns information for the current user. If you wish to run the application with the current
''' Windows user credentials, call My.User.InitializeWithWindowsUser().
''' </summary>
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")> _
Friend ReadOnly Property User() As Global.Microsoft.VisualBasic.ApplicationServices.User
Get
Return s_User.GetInstance()
End Get
End Property
''' <summary>
''' Returns the application log. The listeners can be configured by the application's configuration file.
''' </summary>
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")> _
Friend ReadOnly Property Log() As Global.Microsoft.VisualBasic.Logging.Log
Get
Return s_Log.GetInstance()
End Get
End Property
''' <summary>
''' Returns the collection of Windows defined in the project.
''' </summary>
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")> _
Friend ReadOnly Property Windows() As MyWindows
<Global.System.Diagnostics.DebuggerHidden()> _
Get
Return s_Windows.GetInstance()
End Get
End Property
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Never)> _
<Global.Microsoft.VisualBasic.MyGroupCollection("System.Windows.Window", "Create__Instance__", "Dispose__Instance__", "My.MyWpfExtenstionModule.Windows")> _
Friend NotInheritable Class MyWindows
<Global.System.Diagnostics.DebuggerHidden()> _
Private Shared Function Create__Instance__(Of T As {New, Global.System.Windows.Window})(ByVal Instance As T) As T
If Instance Is Nothing Then
If s_WindowBeingCreated IsNot Nothing Then
If s_WindowBeingCreated.ContainsKey(GetType(T)) = True Then
Throw New Global.System.InvalidOperationException("The window cannot be accessed via My.Windows from the Window constructor.")
End If
Else
s_WindowBeingCreated = New Global.System.Collections.Hashtable()
End If
s_WindowBeingCreated.Add(GetType(T), Nothing)
Return New T()
s_WindowBeingCreated.Remove(GetType(T))
Else
Return Instance
End If
End Function
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1822:MarkMembersAsStatic")> _
<Global.System.Diagnostics.DebuggerHidden()> _
Private Sub Dispose__Instance__(Of T As Global.System.Windows.Window)(ByRef instance As T)
instance = Nothing
End Sub
<Global.System.Diagnostics.DebuggerHidden()> _
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Never)> _
Public Sub New()
MyBase.New()
End Sub
<Global.System.ThreadStatic()> Private Shared s_WindowBeingCreated As Global.System.Collections.Hashtable
<Global.System.ComponentModel.EditorBrowsable(Global.System.ComponentModel.EditorBrowsableState.Never)> Public Overrides Function Equals(ByVal o As Object) As Boolean
Return MyBase.Equals(o)
End Function
<Global.System.ComponentModel.EditorBrowsable(Global.System.ComponentModel.EditorBrowsableState.Never)> Public Overrides Function GetHashCode() As Integer
Return MyBase.GetHashCode
End Function
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1822:MarkMembersAsStatic")> _
<Global.System.ComponentModel.EditorBrowsable(Global.System.ComponentModel.EditorBrowsableState.Never)> _
Friend Overloads Function [GetType]() As Global.System.Type
Return GetType(MyWindows)
End Function
<Global.System.ComponentModel.EditorBrowsable(Global.System.ComponentModel.EditorBrowsableState.Never)> Public Overrides Function ToString() As String
Return MyBase.ToString
End Function
End Class
End Module
End Namespace
Partial Class Application
Inherits Global.System.Windows.Application
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")> _
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1822:MarkMembersAsStatic")> _
Friend ReadOnly Property Info() As Global.Microsoft.VisualBasic.ApplicationServices.AssemblyInfo
<Global.System.Diagnostics.DebuggerHidden()> _
Get
Return New Global.Microsoft.VisualBasic.ApplicationServices.AssemblyInfo(Global.System.Reflection.Assembly.GetExecutingAssembly())
End Get
End Property
End Class
#End If
+62
View File
@@ -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
+117
View File
@@ -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.EgtWindowMaker.My.MySettings
Get
Return Global.EgtWindowMaker.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,100 @@
<Window x:Class="NewWindowWndV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:EgtWindowMaker"
mc:Ignorable="d"
Title="Editor Finestra"
Height="900" Width="1200"
WindowStartupLocation="CenterOwner">
<TabControl SelectedIndex="{Binding SelPage}"
Style="{StaticResource TabControl.NoHeader}">
<TabItem Header="TemplateList">
<DataGrid ItemsSource="{Binding TemplateList}"
SelectedItem="{Binding SelTemplate}"
AutoGenerateColumns="False"
CanUserDeleteRows="False"
CanUserResizeRows="False"
SelectionMode="Single"
SelectionUnit="FullRow"
CanUserSortColumns="False"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
HorizontalGridLinesBrush="Transparent"
VerticalGridLinesBrush="Transparent"
ColumnHeaderHeight="32"
HeadersVisibility="Column"
FontSize="12"
FontFamily="/Resources/Fonts/#Roboto"
FontWeight="Regular"
RowHeight="150"
BorderThickness="0">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="{StaticResource EgtWindow.DarkBlue}"/>
<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"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn}"/>
<DataGridTemplateColumn Header="Immagine"
Width="1*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding sImagePath}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Name"
Binding="{Binding sName}"
IsReadOnly="True"
Width="1*"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn}"/>
<DataGridTextColumn Header="Larghezza"
Binding="{Binding dWidth}"
IsReadOnly="True"
Width="1*"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn}"/>
<DataGridTextColumn Header="Altezza"
Binding="{Binding dHeight}"
IsReadOnly="True"
Width="1*"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn}"/>
</DataGrid.Columns>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<EventSetter Event="MouseDoubleClick" Handler="Row_MouseDoubleClick"/>
</Style>
</DataGrid.RowStyle>
</DataGrid>
</TabItem>
<TabItem Header="ManageWindow">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<local:ManageWindowV DataContext="{Binding ManageWindowVM}"/>
<StackPanel Grid.Row="1"
Orientation="Horizontal"
HorizontalAlignment="Right"
Margin="10">
<Button Content="Ok"
Command="{Binding Ok_Command}"
Margin="0,0,10,0"
Style="{StaticResource Button.Confirm}"/>
<Button Content="Annulla"
IsCancel="True"
Style="{StaticResource Button.Confirm}"/>
</StackPanel>
</Grid>
</TabItem>
</TabControl>
</Window>
@@ -0,0 +1,30 @@
Public Class NewWindowWndV
Private WithEvents m_NewWindowWndVM As NewWindowWndVM
Sub New(Owner As Windows.Window, NewWindowWndVM As NewWindowWndVM)
' This call is required by the designer.
InitializeComponent()
Me.Owner = Owner
' Add any initialization after the InitializeComponent() call.
m_NewWindowWndVM = NewWindowWndVM
Me.DataContext = m_NewWindowWndVM
'AddHandler Me.ContentRendered, AddressOf ContentRendered2
End Sub
Private Sub Row_MouseDoubleClick(sender As Object, e As MouseButtonEventArgs)
If IsNothing(sender) OrElse TypeOf sender IsNot DataGridRow Then
Return
End If
Dim SelDataGridRow As DataGridRow = DirectCast(sender, DataGridRow)
If IsNothing(SelDataGridRow.DataContext) Then Return
m_NewWindowWndVM.TemplateConfirmed()
End Sub
Private Sub CloseWindow(bDialogResult As Boolean) Handles m_NewWindowWndVM.m_CloseWindow
Me.DialogResult = bDialogResult
End Sub
End Class
@@ -0,0 +1,194 @@
Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib.EgtInterface
Imports EgtWPFLib5
Public Class NewWindowWndVM
Inherits VMBase
Public Enum NewWindowPages
TEMPATELIST = 0
EDIT = 1
End Enum
Friend Event m_CloseWindow(bDialogResult As Boolean)
Private m_ManageWindowVM As ManageWindowVM
Public ReadOnly Property ManageWindowVM As ManageWindowVM
Get
Return m_ManageWindowVM
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_bNewWindow As Boolean = False
Private m_SelPage As NewWindowPages
Public Property SelPage As Integer
Get
Return m_SelPage
End Get
Set(value As Integer)
SetSelPage(value)
End Set
End Property
Friend Sub SetSelPage(Page As NewWindowPages)
Dim bOk As Boolean = True
' Esco dallo stato corrente
Select Case m_SelPage
Case NewWindowPages.TEMPATELIST
'bOk = ExitHOME()
Case NewWindowPages.EDIT
'bOk = ExitESTIMATING()
End Select
If bOk Then
' Entro nel nuovo stato
m_SelPage = Page
Select Case m_SelPage
Case NewWindowPages.TEMPATELIST
'bOk = InitHOME()
Case NewWindowPages.EDIT
'bOk = InitESTIMATING()
End Select
End If
NotifyPropertyChanged(NameOf(SelPage))
End Sub
Private m_TemplateList As New ObservableCollection(Of TemplateRow)
Public ReadOnly Property TemplateList As ObservableCollection(Of TemplateRow)
Get
Return m_TemplateList
End Get
End Property
Private m_SelTemplate As TemplateRow
Public Property SelTemplate As TemplateRow
Get
Return m_SelTemplate
End Get
Set(value As TemplateRow)
m_SelTemplate = value
End Set
End Property
' Definizione comandi
Private m_cmdOk As ICommand
Sub New()
m_ManageWindowVM = New ManageWindowVM
End Sub
Friend Sub Init(nId As Integer)
If nId > 0 Then
m_nId = nId
m_ManageWindowVM.Read(Map.refMainWindowVM.MainWindowM.sEstimationDir & "\" & Map.refEstimationDetailPageVM.CurrEstimation.nId & "\" & m_nId & ".jwd")
m_SelPage = NewWindowPages.EDIT
Else
m_bNewWindow = True
m_nId = Map.refEstimationDetailPageVM.NewWindowId()
' carico template
Dim TemplateFiles() As String = Directory.GetFiles(Map.refMainWindowVM.MainWindowM.sTemplateDir)
For Each Template In TemplateFiles
If Path.GetExtension(Template).ToLower <> ".jwd" Then Continue For
Dim TemplateData() As String = Path.GetFileNameWithoutExtension(Template).Split("_"c)
Dim nTemplateId As Integer = 0
Integer.TryParse(TemplateData(0), nTemplateId)
Dim sName As String = ""
If TemplateData.Count > 1 Then
sName = TemplateData(1)
End If
Dim dWidth As Double = 0
If TemplateData.Count > 2 Then
StringToDouble(TemplateData(2), dWidth)
End If
Dim dHeight As Double = 0
If TemplateData.Count > 3 Then
StringToDouble(TemplateData(3), dHeight)
End If
m_TemplateList.Add(New TemplateRow(nTemplateId, sName, dWidth, dHeight))
Next
End If
End Sub
Public Sub TemplateConfirmed()
m_ManageWindowVM.Read(Map.refMainWindowVM.MainWindowM.sTemplateDir & "\" & SelTemplate.nId & "_" & SelTemplate.sName & "_" & SelTemplate.dWidth & "_" & SelTemplate.dHeight & ".jwd")
SetSelPage(NewWindowPages.EDIT)
End Sub
Friend Function OpenWindow(sFilePath As String) As Boolean
Dim bOk As Boolean = False
If String.IsNullOrEmpty(sFilePath) Then
' Recupero cartella dell'ultimo progetto aperto
Dim sDir As String = ""
GetMainPrivateProfileString(S_MRUFILES, K_FILE & 1, "", sDir)
If Not String.IsNullOrWhiteSpace(sDir) Then
sDir = Path.GetDirectoryName(sDir)
End If
Dim OpenFileDialog As New Windows.Forms.OpenFileDialog With {
.Title = "Open",
.Filter = "Window project|*.jwd",
.FilterIndex = 1,
.InitialDirectory = sDir
}
If Not OpenFileDialog.ShowDialog() = Windows.Forms.DialogResult.OK Then Return False
sFilePath = OpenFileDialog.FileName
End If
Map.refManageWindowVM.Read(sFilePath)
Return bOk
End Function
Public Sub SaveWindow()
' Recupero cartella dell'ultimo progetto aperto
Dim sDir As String = ""
GetMainPrivateProfileString(S_MRUFILES, K_FILE & 1, "", sDir)
If Not String.IsNullOrWhiteSpace(sDir) Then
sDir = Path.GetDirectoryName(sDir)
End If
Dim SaveFileDialog As New Windows.Forms.SaveFileDialog With {
.Title = "Open",
.Filter = "Window project|*.jwd",
.FilterIndex = 1,
.InitialDirectory = sDir
}
If Not SaveFileDialog.ShowDialog() = Windows.Forms.DialogResult.OK Then Return
Map.refManageWindowVM.Write(SaveFileDialog.FileName)
EgtSaveFile(Path.ChangeExtension(SaveFileDialog.FileName, ".nge"), NGE.BIN)
End Sub
#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_bNewWindow Then
' aggiungo riga della finestra all'ordine
Map.refEstimationDetailPageVM.AddWindow(m_nId)
End If
' salvo finestra
Dim sWindowPath As String = Map.refMainWindowVM.MainWindowM.sEstimationDir & "\" & Map.refEstimationDetailPageVM.CurrEstimation.nId & "\" & m_nId & ".jwd"
m_ManageWindowVM.Write(sWindowPath)
m_ManageWindowVM.SetDShowMode(ManageWindowVM.DShowModes.MODESIMPLE3D)
m_ManageWindowVM.GetImage(Path.ChangeExtension(sWindowPath, ".png"))
RaiseEvent m_CloseWindow(True)
End Sub
#End Region ' Ok
#End Region ' COMMANDS
End Class
@@ -0,0 +1,12 @@
<UserControl x:Class="ProducingPageV"
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:EgtWindowMaker"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
</Grid>
</UserControl>
@@ -0,0 +1,3 @@
Public Class ProducingPageV
End Class
@@ -0,0 +1,3 @@
Public Class ProducingPageVM
End Class
@@ -0,0 +1,89 @@
<StackPanel x:Class="ProjManagerV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Orientation="Horizontal"
IsEnabled="{Binding ProjManager_IsEnabled}">
<!--Barra superiore dei comandi-->
<Button Command="{Binding New_Command}"
ToolTip="{Binding NewToolTip}"
IsEnabled="{Binding ProjCmd_IsEnabled}"
Margin="0,0,2.5,0"
Style="{StaticResource ProjManager_Button}">
<Image Source="/Resources/ProjectManager/New.png"
Style="{StaticResource Button_Image}"/>
</Button>
<Button Command="{Binding OpenCommand}"
ToolTip="{Binding OpenToolTip}"
ContextMenuService.Placement="Bottom"
Tag="{Binding}"
IsEnabled="{Binding ProjCmd_IsEnabled}"
Margin="2.5,0,2.5,0"
Style="{StaticResource ProjManager_Button}">
<Button.ContextMenu>
<ContextMenu ItemsSource="{Binding MruFileNames}"
Style="{StaticResource Icarus_ContextMenu}">
<ContextMenu.Resources>
<Style TargetType="{x:Type MenuItem}" BasedOn="{StaticResource Icarus_MenuItem}">
<Setter Property="Command"
Value="{Binding PlacementTarget.Tag.OpenMruFileCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}" />
<Setter Property="CommandParameter" Value="{Binding}" />
</Style>
</ContextMenu.Resources>
</ContextMenu>
</Button.ContextMenu>
<Image Source="/Resources/ProjectManager/Open.png"
Style="{StaticResource Button_Image}"/>
</Button>
<Button Command="{Binding SaveCommand}"
ToolTip="{Binding SaveToolTip}"
IsEnabled="{Binding ProjCmd_IsEnabled}"
Margin="2.5,0,2.5,0"
Style="{StaticResource ProjManager_Button}">
<Image Source="/Resources/ProjectManager/Save.png"
Style="{StaticResource Button_Image}"/>
</Button>
<!--<Button Command="{Binding SaveAsCommand}"
ToolTip="{Binding SaveAsToolTip}"
IsEnabled="{Binding ProjCmd_IsEnabled}"
Margin="2.5,0,2.5,0"
Style="{StaticResource ProjManager_Button}">
<Image Source="/Resources/ProjectManager/SaveAs.png"
Style="{StaticResource Button_Image}"/>
</Button>
<Button Command="{Binding ImportCommand}"
ToolTip="{Binding ImportToolTip}"
IsEnabled="{Binding ProjCmd_IsEnabled}"
Margin="2.5,0,2.5,0"
Style="{StaticResource ProjManager_Button}">
<Image Source="/Resources/ProjectManager/Import.png"
Style="{StaticResource Button_Image}"/>
</Button>
<Button Command="{Binding ExportCommand}"
ToolTip="{Binding ExportToolTip}"
IsEnabled="{Binding ProjCmd_IsEnabled}"
Margin="2.5,0,2.5,0"
Style="{StaticResource ProjManager_Button}">
<Image Source="/Resources/ProjectManager/Export.png"
Style="{StaticResource Button_Image}"/>
</Button>-->
<!--<Button Command="{Binding ExportCommand}" ToolTip="{Binding ExportToolTip}"
IsEnabled="{Binding DrawIsChecked}">
<Image Source="/Resources/ProjectManager/Export.png" Stretch="Uniform"/>
</Button>-->
<Button Command="{Binding OptionsCommand}"
ToolTip="{Binding OptionsToolTip}"
Margin="2.5,0,2.5,0"
Style="{StaticResource ProjManager_Button}">
<Image Source="/Resources/ProjectManager/Options.png"
Style="{StaticResource Button_Image}"/>
</Button>
<Button Command="{Binding SendFeedbackCommand}"
ToolTip="{Binding SendFeedbackToolTip}"
Margin="2.5,0,0,0"
Style="{StaticResource ProjManager_Button}">
<Image Source="/Resources/ProjectManager/Send.png"
Style="{StaticResource Button_Image}"/>
</Button>
</StackPanel>
@@ -0,0 +1,3 @@
Public Class ProjManagerV
End Class
+521
View File
@@ -0,0 +1,521 @@
Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtWPFLib5
Imports EgtUILib
Imports Newtonsoft.Json
Public Class ProjManagerVM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
Private m_ProjCmd_IsEnabled As Boolean = True
Public ReadOnly Property ProjCmd_IsEnabled As Boolean
Get
Return m_ProjCmd_IsEnabled
End Get
End Property
Friend Sub SetProjCmdIsEnabled(value As Boolean)
m_ProjCmd_IsEnabled = value
NotifyPropertyChanged(NameOf(ProjCmd_IsEnabled))
End Sub
Private m_CurrProject As String = ""
Private m_MruFiles As New MruList
Public ReadOnly Property MruFiles As MruList
Get
Return m_MruFiles
End Get
End Property
Public ReadOnly Property MruFileNames As ObservableCollection(Of String)
Get
For Each FileName In m_MruFiles.FileNames.ToList()
If Not File.Exists(FileName) Then
m_MruFiles.Remove(FileName)
End If
Next
Return m_MruFiles.FileNames
End Get
End Property
Private m_MruImportFiles As New MruList
Public ReadOnly Property MruImportFiles As MruList
Get
Return m_MruImportFiles
End Get
End Property
Public ReadOnly Property MruImportFileNames As ObservableCollection(Of String)
Get
For Each FileName In m_MruImportFiles.FileNames.ToList()
If Not File.Exists(FileName) Then
m_MruImportFiles.Remove(FileName)
End If
Next
Return m_MruImportFiles.FileNames
End Get
End Property
' Definizione comandi
Private m_cmdNew As ICommand
Private m_cmdOpen As ICommand
Private m_cmdOpenMruFile As ICommand
Private m_cmdSave As ICommand
Private m_cmdSaveAs As ICommand
Private m_cmdImport As ICommand
Private m_cmdExport As ICommand
Private m_cmdOptions As ICommand
Private m_cmdSendFeedback As ICommand
#Region "ToolTip"
'Proprietà ToolTip
Public ReadOnly Property NewToolTip As String
Get
Return EgtMsg(MSG_TOPCOMMANDBAR + 1)
End Get
End Property
Public ReadOnly Property OpenToolTip As String
Get
Return EgtMsg(MSG_TOPCOMMANDBAR + 2)
End Get
End Property
Public ReadOnly Property SaveToolTip As String
Get
Return EgtMsg(MSG_TOPCOMMANDBAR + 3)
End Get
End Property
Public ReadOnly Property SaveAsToolTip As String
Get
Return EgtMsg(MSG_TOPCOMMANDBAR + 4)
End Get
End Property
Public ReadOnly Property ImportToolTip As String
Get
Return "Import"
End Get
End Property
Public ReadOnly Property ExportToolTip As String
Get
Return "Export"
End Get
End Property
Public ReadOnly Property OptionsToolTip As String
Get
Return "Options"
End Get
End Property
Public ReadOnly Property SendFeedbackToolTip As String
Get
Return "Send Feedback"
End Get
End Property
#End Region ' ToolTip
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New()
' Creo riferimento a questa classe in Map
Map.SetRefProjManagerVM(Me)
' Impostazioni MruLists
m_MruFiles.Init(S_MRUFILES, 8)
m_MruImportFiles.Init(S_MRUIMPORTFILES, 8)
End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
#End Region ' METHODS
#Region "COMMANDS"
#Region "New"
''' <summary>
''' Returns a command that do Save.
''' </summary>
Public ReadOnly Property New_Command As ICommand
Get
If m_cmdNew Is Nothing Then
m_cmdNew = New Command(AddressOf NewProjectCmd)
End If
Return m_cmdNew
End Get
End Property
''' <summary>
''' Execute the Save. This method is invoked by the SaveCommand.
''' </summary>
Public Sub NewProjectCmd()
NewProject(True)
End Sub
Friend Sub NewProject(bDialog As Boolean)
'' Gestisco eventuale file corrente modificato
'If Not Map.refSceneHostVM.MainController.ManageModified() Then Return
'EgtResetModified()
'Dim NewProjMachine As Machine
'If bDialog AndAlso Map.refMachinePanelVM.MachineList.Count > 0 Then
' Dim ChooseMachineWndVM As New ChooseMachineWndVM
' Dim ChooseMachineWnd As New ChooseMachineWndV(Application.Current.MainWindow, ChooseMachineWndVM)
' Dim bResult As Boolean = ChooseMachineWnd.ShowDialog()
' If IsNothing(bResult) OrElse Not bResult Then Return
' NewProjMachine = ChooseMachineWndVM.SelMachine
'Else
' NewProjMachine = Map.refMachinePanelVM.SelectedMachine
'End If
'' imposto la macchina
'Map.refMachinePanelVM.SelectedMachine = NewProjMachine
' creo nuovo progetto
Map.refManageWindowVM.ResetParamCathegory()
Map.refManageWindowVM.NewWindow()
'NotifyPropertyChanged(NameOf(MruFileNames))
End Sub
#End Region ' New
#Region "OpenCommand"
''' <summary>
''' Returns a command that do Open.
''' </summary>
Public ReadOnly Property OpenCommand As ICommand
Get
If m_cmdOpen Is Nothing Then
m_cmdOpen = New Command(AddressOf Open)
End If
Return m_cmdOpen
End Get
End Property
''' <summary>
''' Execute the Open. This method is invoked by the OpenCommand.
''' </summary>
Friend Sub Open()
OpenProject("")
End Sub
Friend Function OpenProject(sFilePath As String) As Boolean
Dim bOk As Boolean = False
If String.IsNullOrEmpty(sFilePath) Then
' Recupero cartella dell'ultimo progetto aperto
Dim sDir As String = ""
GetMainPrivateProfileString(S_MRUFILES, K_FILE & 1, "", sDir)
If Not String.IsNullOrWhiteSpace(sDir) Then
sDir = Path.GetDirectoryName(sDir)
End If
Dim OpenFileDialog As New Windows.Forms.OpenFileDialog With {
.Title = "Open",
.Filter = "Window project|*.jwd",
.FilterIndex = 1,
.InitialDirectory = sDir
}
If Not OpenFileDialog.ShowDialog() = Windows.Forms.DialogResult.OK Then Return False
sFilePath = OpenFileDialog.FileName
End If
Map.refManageWindowVM.Read(sFilePath)
Return bOk
End Function
#End Region ' OpenCommand
#Region "OpenMruFileCommand"
''' <summary>
''' Returns a command that do Open.
''' </summary>
Public ReadOnly Property OpenMruFileCommand As ICommand
Get
If m_cmdOpenMruFile Is Nothing Then
m_cmdOpenMruFile = New Command(AddressOf OpenMruFile)
End If
Return m_cmdOpenMruFile
End Get
End Property
''' <summary>
''' Execute the Open. This method is invoked by the OpenCommand.
''' </summary>
Public Sub OpenMruFile(ByVal param As Object)
OpenProject(DirectCast(param, String).Replace("__", "_"))
End Sub
#End Region ' OpenMruFileCommand
#Region "SaveCommand"
''' <summary>
''' Returns a command that do Save.
''' </summary>
Public ReadOnly Property SaveCommand As ICommand
Get
If m_cmdSave Is Nothing Then
m_cmdSave = New Command(AddressOf SaveCmd)
End If
Return m_cmdSave
End Get
End Property
Public Sub SaveCmd()
Save()
End Sub
''' <summary>
''' Execute the Save. This method is invoked by the SaveCommand.
''' </summary>
Public Sub Save()
' Recupero cartella dell'ultimo progetto aperto
Dim sDir As String = ""
GetMainPrivateProfileString(S_MRUFILES, K_FILE & 1, "", sDir)
If Not String.IsNullOrWhiteSpace(sDir) Then
sDir = Path.GetDirectoryName(sDir)
End If
Dim SaveFileDialog As New Windows.Forms.SaveFileDialog With {
.Title = "Open",
.Filter = "Window project|*.jwd",
.FilterIndex = 1,
.InitialDirectory = sDir
}
If Not SaveFileDialog.ShowDialog() = Windows.Forms.DialogResult.OK Then Return
Map.refManageWindowVM.Write(SaveFileDialog.FileName)
EgtSaveFile(Path.ChangeExtension(SaveFileDialog.FileName, ".nge"), NGE.BIN)
End Sub
#End Region ' SaveCommand
#Region "SaveAsCommand"
''' <summary>
''' Returns a command that do SaveAs.
''' </summary>
Public ReadOnly Property SaveAsCommand As ICommand
Get
If m_cmdSaveAs Is Nothing Then
m_cmdSaveAs = New Command(AddressOf SaveAs)
End If
Return m_cmdSaveAs
End Get
End Property
''' <summary>
''' Execute the SaveAs. This method is invoked by the SaveAsCommand.
''' </summary>
Public Sub SaveAs(ByVal param As Object)
Map.refSceneHostVM.SaveAsProject()
End Sub
#End Region ' SaveAsCommand
#Region "Import"
''' <summary>
''' Returns a command that do Import.
''' </summary>
Public ReadOnly Property ImportCommand As ICommand
Get
If m_cmdImport Is Nothing Then
m_cmdImport = New Command(AddressOf Import)
End If
Return m_cmdImport
End Get
End Property
''' <summary>
''' Execute the Import. This method is invoked by the ImportCommand.
''' </summary>
Public Sub Import(ByVal param As Object)
'Map.refSceneHostVM.InsertProject()
End Sub
#End Region ' Import
#Region "ExportCommand"
''' <summary>
''' Returns a command that do Export.
''' </summary>
Public ReadOnly Property ExportCommand As ICommand
Get
If m_cmdExport Is Nothing Then
m_cmdExport = New Command(AddressOf Export)
End If
Return m_cmdExport
End Get
End Property
''' <summary>
''' Execute the Export. This method is invoked by the ExportCommand.
''' </summary>
Public Sub Export(ByVal param As Object)
'Map.refSceneHostVM.ExportProject()
End Sub
#End Region ' ExportCommand
#Region "Options"
''' <summary>
''' Returns a command that do Export.
''' </summary>
Public ReadOnly Property OptionsCommand As ICommand
Get
If m_cmdOptions Is Nothing Then
m_cmdOptions = New Command(AddressOf Options)
End If
Return m_cmdOptions
End Get
End Property
''' <summary>
''' Execute the Export. This method is invoked by the ExportCommand.
''' </summary>
Public Sub Options(ByVal param As Object)
'Dim OptionsWindow As New OptionWindowV
'OptionsWindow.DataContext = New OptionWindowVM
'OptionsWindow.Owner = Application.Current.MainWindow
'OptionsWindow.ShowDialog()
End Sub
#End Region ' Options
#Region "SendFeedback"
''' <summary>
''' Returns a command that do SendFeedback.
''' </summary>
Public ReadOnly Property SendFeedbackCommand As ICommand
Get
If m_cmdSendFeedback Is Nothing Then
m_cmdSendFeedback = New Command(AddressOf SendFeedback)
End If
Return m_cmdSendFeedback
End Get
End Property
''' <summary>
''' Execute the SendFeedback. This method is invoked by the SendFeedbackCommand.
''' </summary>
Public Sub SendFeedback(ByVal param As Object)
'' Recupero indirizzo a cui spedire la mail
'Dim sSupportAddress As String = String.Empty
'GetMainPrivateProfileString(S_GENERAL, K_SUPPORT, "support@egaltech.com", sSupportAddress)
'' se vuoto do messaggio di errore ed esco
'If String.IsNullOrWhiteSpace(sSupportAddress) Then
' MessageBox.Show(EgtMsg(MSG_TOPCOMMANDBAR + 10), EgtMsg(MSG_MESSAGEBOX + 1), MessageBoxButton.OK, MessageBoxImage.Error)
' Return
'End If
'' Recupero numero chiave
'Dim sKey As String = String.Empty
'EgtGetKeyInfo(sKey)
'' Recupero file del progetto corrente
'Dim sCurrProject As String = String.Empty
'EgtGetCurrFilePath(sCurrProject)
'' se nome file vuoto o con estensione non valida, chiedo se si vuole salvare
'If String.IsNullOrWhiteSpace(sCurrProject) Or EgtGetFileType(sCurrProject) <> FT.NGE Then
' If MessageBox.Show(EgtMsg(MSG_TOPCOMMANDBAR + 11), "", MessageBoxButton.YesNo, MessageBoxImage.Question) = MessageBoxResult.Yes Then
' Map.refSceneHostVM.SaveProject()
' End If
' EgtGetCurrFilePath(sCurrProject)
' ' se modificato, chiedo se si vuole salvare
'Else
' If EgtGetModified() Then
' If MessageBox.Show(EgtMsg(MSG_TOPCOMMANDBAR + 11), "", MessageBoxButton.YesNo, MessageBoxImage.Question) = MessageBoxResult.Yes Then
' Map.refSceneHostVM.SaveProject()
' End If
' End If
'End If
'' Recupero macchine dei gruppi di lavoro del progetto
'Dim Machines As New List(Of String)
'Dim nMchGrpId As Integer = EgtGetFirstMachGroup()
'While nMchGrpId <> GDB_ID.NULL
' Dim sMachineName As String = String.Empty
' EgtGetMachGroupMachineName(nMchGrpId, sMachineName)
' If Not String.IsNullOrWhiteSpace(sMachineName) Then
' Machines.Add(sMachineName)
' End If
' nMchGrpId = EgtGetNextMachGroup(nMchGrpId)
'End While
'' Recupero altri file con lo stesso nome del progetto
'Dim OtherFiles As New List(Of String)
'If Not String.IsNullOrWhiteSpace(sCurrProject) Then
' Dim sCurrProjectDir As String = Path.GetDirectoryName(sCurrProject)
' If Not String.IsNullOrWhiteSpace(sCurrProjectDir) Then
' Dim sCurrProjName As String = Path.GetFileNameWithoutExtension(sCurrProject).ToUpper()
' Dim TempFiles() As String = Directory.GetFiles(sCurrProjectDir)
' For FileIndex = 0 To TempFiles.Count - 1
' If TempFiles(FileIndex) = sCurrProject Then Continue For
' Dim sCurrFileName As String = Path.GetFileNameWithoutExtension( TempFiles(FileIndex)).ToUpper()
' If String.Compare(sCurrFileName, sCurrProjName) = 0 Then
' OtherFiles.Add(TempFiles(FileIndex))
' End If
' Next
' End If
'End If
'' Creo zip file da allegare
'Dim sZipToCreate As String = Map.refMainWindowVM.MainWindowM.sTempDir & "\Feedback.zip"
'If File.Exists(sZipToCreate) Then
' File.Delete(sZipToCreate)
'End If
'Try
' Using zip As New Ionic.Zip.ZipFile(sZipToCreate, Console.Out)
' zip.AlternateEncodingUsage = Ionic.Zip.ZipOption.Always
' zip.AlternateEncoding = Text.Encoding.UTF8
' ' aggiungo file macchine
' For Each sMachineName As String In Machines
' Dim sMachineDir As String = Map.refMainWindowVM.MainWindowM.sMachinesRoot & "\" & sMachineName
' If Directory.Exists(sMachineDir) Then
' zip.AddSelectedFiles( "name != *\.git\*.* and name != *.git*", sMachineDir, sMachineName, True)
' End If
' Next
' ' aggiungo progetto corrente
' If File.Exists(sCurrProject) Then
' zip.AddItem(sCurrProject, "")
' End If
' ' aggiungo file log
' If File.Exists(Map.refMainWindowVM.MainWindowM.sLogFile) Then
' zip.AddItem(Map.refMainWindowVM.MainWindowM.sLogFile, "")
' End If
' ' aggiungo file ausiliari
' For Each sOther As String In OtherFiles
' zip.AddItem(sOther, "")
' Next
' ' salvo lo zip
' zip.Save()
' End Using
'Catch ex1 As Exception
' EgtOutLog("Exception in zip: " & ex1.ToString())
'End Try
'' preparo la mail per il supporto
'Dim bEx As Boolean = False
'Try
' Dim sAddressArray As String() = sSupportAddress.Split(CType(",", Char()))
' Dim SendFeedbackWindow As New EgtWPFLib5.MapiMailMessage("Icarus Feedback - " & sKey)
' SendFeedbackWindow.Recipients.Add(sAddressArray(0))
' For index As Integer = 1 To sAddressArray.Length() - 1
' SendFeedbackWindow.Recipients.Add(sAddressArray(index), EgtWPFLib5.MapiMailMessage.RecipientType.CC)
' Next
' If Not String.IsNullOrWhiteSpace(sZipToCreate) AndAlso File.Exists(sZipToCreate) Then
' SendFeedbackWindow.Files.Add(Map.refMainWindowVM.MainWindowM.sTempDir & "\Feedback.zip")
' End If
' SendFeedbackWindow.ShowDialog()
'Catch ex As Exception
' EgtOutLog("Feedback exception: " & ex.ToString)
' bEx = True
'End Try
'If bEx OrElse EgtWPFLib5.MapiMailMessage.m_ErrorCode <> 0 Then
' MessageBox.Show(String.Format(EgtMsg(MSG_TOPCOMMANDBAR + 12), sSupportAddress, sZipToCreate), EgtMsg(MSG_MESSAGEBOX + 3), MessageBoxButton.OK, MessageBoxImage.Information)
'Else
' Map.refMyStatusBarVM.SetOutputMessage(EgtMsg(MSG_TOPCOMMANDBAR + 14), 5)
'End If
End Sub
#End Region ' SendFeedback
#End Region ' Commands
End Class
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 535 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 558 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 413 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 418 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 510 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 547 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 528 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 619 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 694 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 677 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 564 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 689 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 648 B

File diff suppressed because it is too large Load Diff
+10
View File
@@ -0,0 +1,10 @@
<UserControl x:Class="SceneHostV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtUILib="clr-namespace:EgtUILib;assembly=EgtUILib">
<WindowsFormsHost>
<EgtUILib:Scene x:Name="MainScene"/>
</WindowsFormsHost>
</UserControl>
@@ -0,0 +1,31 @@
Imports System.Windows.Interop
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib5
Public Class SceneHostV
Private m_MySceneHostVM As MySceneHostVM
Sub New()
' This call is required by the designer.
InitializeComponent()
' Assegno al riferimento locale al VM il VM preso dal DataContext
Me.DataContext = New MySceneHostVM
m_MySceneHostVM = DirectCast(Me.DataContext, MySceneHostVM)
m_MySceneHostVM.SetMainScene(MainScene)
End Sub
'Private Sub MainScene_GotFocus() Handles MainScene.GotFocus
' m_MySceneHostVM.SetIsFocused(True)
' ' Map.refSecondaryWindowV.Topmost = True
' 'Map.refSecondaryWindowVM.SetVisibility(True)
'End Sub
'Private Sub MainScene_LostFocus() Handles MainScene.LostFocus
' m_MySceneHostVM.SetIsFocused(False)
' ' Map.refSecondaryWindowV.Topmost = False
' 'Map.refSecondaryWindowVM.SetVisibility(False)
'End Sub
End Class
+22
View File
@@ -0,0 +1,22 @@
<StackPanel x:Class="ShowPanelV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Orientation="Horizontal">
<RadioButton ToolTip="{Binding RenderingWFToolTip}"
Style="{StaticResource ToolBar_ToggleButton}"
IsChecked="{Binding WireframeIsChecked}">
<Image Source="/Resources/ShowPanel/RenderingWF.png" Stretch="Uniform"/>
</RadioButton>
<RadioButton ToolTip="{Binding RenderingHLToolTip}"
Style="{StaticResource ToolBar_ToggleButton}"
IsChecked="{Binding HiddenLineIsChecked}">
<Image Source="/Resources/ShowPanel/RenderingHL.png" Stretch="Uniform"/>
</RadioButton>
<RadioButton ToolTip="{Binding RenderingSHToolTip}"
Style="{StaticResource ToolBar_ToggleButton}"
IsChecked="{Binding ShadingIsChecked}">
<Image Source="/Resources/ShowPanel/RenderingSH.png" Stretch="Uniform"/>
</RadioButton>
</StackPanel>
@@ -0,0 +1,3 @@
Public Class ShowPanelV
End Class
+189
View File
@@ -0,0 +1,189 @@
'------------------------------------------------------------------------------
' <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 Off
Option Explicit On
Imports System.Xml.Serialization
'
'This source code was auto-generated by xsd, Version=4.8.3928.0.
'
'''<remarks/>
<System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0"), _
System.SerializableAttribute(), _
System.Diagnostics.DebuggerStepThroughAttribute(), _
System.ComponentModel.DesignerCategoryAttribute("code"), _
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=true), _
System.Xml.Serialization.XmlRootAttribute([Namespace]:="", IsNullable:=false)> _
Partial Public Class ParametriOpzioni
Private itemsField() As ParametriOpzioniParametri
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute("Parametri", Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Items() As ParametriOpzioniParametri()
Get
Return Me.itemsField
End Get
Set
Me.itemsField = value
End Set
End Property
End Class
'''<remarks/>
<System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0"), _
System.SerializableAttribute(), _
System.Diagnostics.DebuggerStepThroughAttribute(), _
System.ComponentModel.DesignerCategoryAttribute("code"), _
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=true)> _
Partial Public Class ParametriOpzioniParametri
Private nomeParametroField As String
Private descrizioneParametroField As String
Private valoreCorrenteField As String
Private tipoField As String
Private visibleField As String
Private ricalcolaSeModificatoField As String
Private opzioniField() As ParametriOpzioniParametriOpzioni
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property NomeParametro() As String
Get
Return Me.nomeParametroField
End Get
Set
Me.nomeParametroField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property DescrizioneParametro() As String
Get
Return Me.descrizioneParametroField
End Get
Set
Me.descrizioneParametroField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property ValoreCorrente() As String
Get
Return Me.valoreCorrenteField
End Get
Set
Me.valoreCorrenteField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Tipo() As String
Get
Return Me.tipoField
End Get
Set
Me.tipoField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Visible() As String
Get
Return Me.visibleField
End Get
Set
Me.visibleField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property RicalcolaSeModificato() As String
Get
Return Me.ricalcolaSeModificatoField
End Get
Set
Me.ricalcolaSeModificatoField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute("Opzioni", Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Opzioni() As ParametriOpzioniParametriOpzioni()
Get
Return Me.opzioniField
End Get
Set
Me.opzioniField = value
End Set
End Property
End Class
'''<remarks/>
<System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0"), _
System.SerializableAttribute(), _
System.Diagnostics.DebuggerStepThroughAttribute(), _
System.ComponentModel.DesignerCategoryAttribute("code"), _
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=true)> _
Partial Public Class ParametriOpzioniParametriOpzioni
Private nomeParametroField As String
Private descrizioneOpzioneField As String
Private valoreField As String
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property NomeParametro() As String
Get
Return Me.nomeParametroField
End Get
Set
Me.nomeParametroField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property DescrizioneOpzione() As String
Get
Return Me.descrizioneOpzioneField
End Get
Set
Me.descrizioneOpzioneField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Valore() As String
Get
Return Me.valoreField
End Get
Set
Me.valoreField = value
End Set
End Property
End Class
+287
View File
@@ -0,0 +1,287 @@
Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib5
Public Module CurrentMachine
Private m_Salt As String = "3,1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679"
' Nome macchina corrente
Private m_sMachineName As String = String.Empty
Friend ReadOnly Property sMachineName As String
Get
Return m_sMachineName
End Get
End Property
' Direttorio macchina corrente
Private m_sMachDir As String = String.Empty
Friend ReadOnly Property sMachDir As String
Get
Return m_sMachDir
End Get
End Property
' File ini della macchina
Private m_sMachIniFile As String = String.Empty
Friend ReadOnly Property sMachIniFile As String
Get
Return m_sMachIniFile
End Get
End Property
' File ini dei dati della macchina
Private m_sMachDataIniFile As String = String.Empty
Friend ReadOnly Property sMachDataIniFile As String
Get
Return m_sMachDataIniFile
End Get
End Property
' File script della macchina
Private m_sMachScriptDir As String = String.Empty
Friend ReadOnly Property sMachScriptDir As String
Get
Return m_sMachScriptDir
End Get
End Property
' Cartella delle lavorazioni
Private m_sMachiningFilePath As String = String.Empty
Friend ReadOnly Property sMachiningFilePath As String
Get
Return m_sMachiningFilePath
End Get
End Property
Friend Sub SetMachiningFilePath(sValue As String)
m_sMachiningFilePath = sValue
End Sub
' Cartella dei materiali
Private m_sMaterialFilePath As String = String.Empty
Friend ReadOnly Property sMaterialFilePath As String
Get
Return m_sMaterialFilePath
End Get
End Property
Friend Sub SetMaterialFilePath(sValue As String)
m_sMaterialFilePath = sValue
End Sub
' box della tavola macchina
Private m_b3Tab As New BBox3d
Friend ReadOnly Property b3Tab As BBox3d
Get
Return m_b3Tab
End Get
End Property
' box dell'area di estrusione
Private m_b3ExtrusionArea As New BBox3d
Friend ReadOnly Property b3ExtrusionArea As BBox3d
Get
Return m_b3ExtrusionArea
End Get
End Property
' altezza massima di estrusione impostata in file ini macchina
Private m_dSlicingMaxHeight As Double
Public ReadOnly Property dSlicingMaxHeight As Double
Get
Return m_dSlicingMaxHeight
End Get
End Property
#Region "Init"
Sub InitCurrentMachine(sMachinesRootDir As String, sMachineName As String)
' Nome macchina corrente
m_sMachineName = sMachineName
' Impostazione direttorio macchina
m_sMachDir = sMachinesRootDir & "\" & sMachineName
' Impostazione path MachIni file
m_sMachIniFile = sMachinesRootDir & "\" & sMachineName & "\" & sMachineName & ".ini"
' Impostazione path MachData Ini file
m_sMachDataIniFile = sMachinesRootDir & "\" & sMachineName & "\" & "CustomData" & "\" & MACHDATA_INI_FILE_NAME
If Not File.Exists(m_sMachDataIniFile) Then m_sMachDataIniFile = ""
' impostazione cartella script
m_sMachScriptDir = sMachinesRootDir & "\" & sMachineName & "\Scripts"
' impostazione cartella lavorazioni
m_sMachiningFilePath = sMachinesRootDir & "\" & sMachineName & "\Machinings\Machinings.ini"
' impostazione cartella materiali
m_sMaterialFilePath = sMachinesRootDir & "\" & sMachineName & "\Materials\Materials.ini"
' leggo altezza massima estrusione impostata su macchina
m_dSlicingMaxHeight = GetPrivateProfileDouble(S_MACH_PRINTING3D, K_MAX_HEIGHT, 900, m_sMachIniFile)
' Disabilito segnalazione modificato
Dim DisableMgr As New DisableModifiedMgr
' recupero box macchina
Dim nQqqId = EgtAddMachGroup("qqq")
EgtSetTable("Tab")
EgtGetTableArea(1, m_b3Tab)
EgtResetCurrMachGroup()
EgtRemoveMachGroup(nQqqId)
' carico materiali e lavorazioni
Map.refTopPanelVM.InitMaterialList()
Map.refMaterialDbVM.Init()
Map.refTopPanelVM.InitMachiningsList()
Map.refMachiningDbVM.Init()
' Ripristino stato segnalazione modifica
DisableMgr.ReEnable()
End Sub
#End Region 'Init
#Region "Methods"
Public Sub CreateMachineTable()
' Disabilito segnalazione modificato
Dim DisableMgr As New DisableModifiedMgr
Dim dTabX = b3Tab.DimX
Dim dTabY = b3Tab.DimY()
' Disegno tavola
Dim nTabPartId As Integer = EgtCreateGroup(GDB_ID.ROOT)
EgtSetLevel(nTabPartId, GDB_LV.SYSTEM)
EgtSetMode(nTabPartId, GDB_MD.LOCKED)
EgtSetStatus(nTabPartId, GDB_ST.ON_)
EgtSetName(nTabPartId, TABLE)
Dim nTabLayerId As Integer = EgtCreateGroup(nTabPartId)
EgtSetName(nTabLayerId, TABLE)
Dim nTabOutlineId As Integer = EgtCreateRectangle2P(nTabLayerId, New Point3d(0, 0, 0), New Point3d(dTabX, dTabY, 0))
EgtSetName(nTabOutlineId, TABLE_OUTLINE)
' scrivo il nome macchina sulla tavola
EgtSetInfo(nTabPartId, KEY_MACHINE_NAME, CurrentMachine.sMachineName)
' scrivo materiale sulla tavola
If Not IsNothing(Map.refTopPanelVM.SelMaterial) Then
EgtSetInfo(nTabPartId, KEY_MATERIAL_GUID, Map.refTopPanelVM.SelMaterial.sGUID)
EgtSetInfo(nTabPartId, KEY_MATERIAL_NAME, Map.refTopPanelVM.SelMaterial.sName)
End If
'' creo area di estrusione
UpdateExtrusionArea()
' Ripristino stato segnalazione modifica
DisableMgr.ReEnable()
End Sub
Public Sub UpdateExtrusionArea()
Dim DisableMgr As New DisableModifiedMgr
' recupero eventuale vecchia area di estrusione
Dim nTabPartId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, TABLE)
Dim nTabLayerId As Integer = EgtGetFirstNameInGroup(nTabPartId, TABLE)
Dim nExtrusionAreaId As Integer = EgtGetFirstNameInGroup(nTabLayerId, EXTRUSION_AREA)
If nExtrusionAreaId <> GDB_ID.NULL Then EgtErase(nExtrusionAreaId)
Dim nExtrusionRectId As Integer = EgtGetFirstNameInGroup(nTabLayerId, EXTRUSION_RECT)
If nExtrusionRectId <> GDB_ID.NULL Then EgtErase(nExtrusionRectId)
' se lavorazione corrente nulla, esco
If IsNothing(Map.refTopPanelVM.CurrMachining) Then
DisableMgr.ReEnable()
Return
End If
' se non esiste file dati macchina, esco
If String.IsNullOrWhiteSpace(m_sMachDataIniFile) Then
DisableMgr.ReEnable()
Return
End If
' recupero tipo di slice
Dim sExtrusionType As String = S_VERTICAL
Dim GeneralCathegory As MachiningCathegory = Map.refTopPanelVM.CurrMachining.CathegoryList.FirstOrDefault(Function(x) x.Type = MachiningCathegory.Cathegories.GENERAL)
Dim SlicingTypeParam As ComboMachiningParam = GeneralCathegory.MachiningParamList.FirstOrDefault(Function(x) x.Type = MachiningParam.Params.SLICINGTYPE)
Dim SlicingTypeValue As Machining.MPAR_SLICINGTYPE = SlicingTypeParam.SelValue.Id
Select Case SlicingTypeValue
Case Machining.MPAR_SLICINGTYPE.VERTICAL
sExtrusionType = S_VERTICAL
Case Machining.MPAR_SLICINGTYPE.DEG45
sExtrusionType = S_45DEGX
Case Machining.MPAR_SLICINGTYPE.DEG45_Y
sExtrusionType = S_45DEGY
Case Machining.MPAR_SLICINGTYPE.HORIZONTAL
sExtrusionType = S_HORIZONTAL
End Select
Dim dExtrXMax = GetPrivateProfileDouble(sExtrusionType, K_MAXX, 0, m_sMachDataIniFile)
Dim dExtrXMin = GetPrivateProfileDouble(sExtrusionType, K_MINX, 0, m_sMachDataIniFile)
Dim dExtrYMax = GetPrivateProfileDouble(sExtrusionType, K_MAXY, 0, m_sMachDataIniFile)
Dim dExtrYMin = GetPrivateProfileDouble(sExtrusionType, K_MINY, 0, m_sMachDataIniFile)
Const AREA_WIDTH As Double = 10
Dim nAuxRectId As Integer = EgtCreateRectangle2P(nTabLayerId, New Point3d(dExtrXMin - AREA_WIDTH, dExtrYMin - AREA_WIDTH, 0), New Point3d(dExtrXMax + AREA_WIDTH, dExtrYMax + AREA_WIDTH, 0))
nExtrusionRectId = EgtCreateRectangle2P(nTabLayerId, New Point3d(dExtrXMin, dExtrYMin, 0), New Point3d(dExtrXMax, dExtrYMax, 0))
nExtrusionAreaId = EgtCreateSurfTmByRegion( nTabLayerId, { nAuxRectId, nExtrusionRectId}, EPS_STM)
EgtErase( nAuxRectId)
Dim c3Temp As New Color3d
c3Temp.FromColor(System.Drawing.Color.Lime)
EgtSetColor(nExtrusionAreaId, c3Temp)
EgtSetName(nExtrusionAreaId, EXTRUSION_AREA)
EgtSetColor(nExtrusionRectId, c3Temp)
EgtSetName(nExtrusionRectId, EXTRUSION_RECT)
m_b3ExtrusionArea = New BBox3d(New Point3d(dExtrXMin, dExtrYMin, 0), New Point3d(dExtrXMax, dExtrYMax, 0))
DisableMgr.ReEnable()
EgtDraw()
End Sub
Friend Function ReadMachiningParamString(lpAppName As String, lpKeyName As String, lpDefault As String, ByRef lpString As String, Optional sFilePath As String = "") As Integer
Dim nResult As Integer = GetPrivateProfileString(lpAppName, lpKeyName, "", lpString, If(Not String.IsNullOrWhiteSpace(sFilePath), sFilePath, m_sMachiningFilePath))
If Not String.IsNullOrWhiteSpace(lpString) Then
lpString = EgwCrypto.PowerDecryptString(lpString, m_Salt)
Else
lpString = lpDefault
End If
Return nResult
End Function
Friend Function ReadMachiningParamSplit(lpAppName As String, lpKeyName As String, lpDefault As String, ByRef lpString As String, Optional sFilePath As String = "") As Integer
Dim nResult As Integer = GetPrivateProfileString(lpAppName, lpKeyName, "", lpString, If(Not String.IsNullOrWhiteSpace(sFilePath), sFilePath, m_sMachiningFilePath))
If Not String.IsNullOrWhiteSpace(lpString) Then
Dim Values() As String = lpString.Split(";"c)
Dim sCryptoValues As String = ""
For ValueIndex = 0 To Values.Count - 1
sCryptoValues += EgwCrypto.PowerDecryptString(Values(ValueIndex), m_Salt) & If(ValueIndex < Values.Count - 1, ";", "")
Next
lpString = sCryptoValues
Else
lpString = lpDefault
End If
Return nResult
End Function
Friend Function ReadMachiningParamDouble(lpAppName As String, lpKeyName As String, dDefault As Double, Optional sFilePath As String = "") As Double
Dim sParam As String = ""
Dim dParam As Double = dDefault
ReadMachiningParamString(lpAppName, lpKeyName, dDefault, sParam, sFilePath)
StringToDouble(sParam, dParam)
Return dParam
End Function
Friend Function WriteMachiningParam(lpAppName As String, lpKeyName As String, lpString As String, Optional sFilePath As String = "") As Boolean
Return WritePrivateProfileString(lpAppName, lpKeyName, EgwCrypto.PowerEncryptString(lpString, m_Salt), If(Not String.IsNullOrWhiteSpace(sFilePath), sFilePath, m_sMachiningFilePath))
End Function
Friend Function WriteMachiningParamSplit(lpAppName As String, lpKeyName As String, lpString As String, Optional sFilePath As String = "") As Boolean
If Not String.IsNullOrWhiteSpace(lpString) Then
Dim Values() As String = lpString.Split(";"c)
Dim sCryptoValues As String = ""
For ValueIndex = 0 To Values.Count - 1
sCryptoValues += EgwCrypto.PowerEncryptString(Values(ValueIndex), m_Salt) & If(ValueIndex < Values.Count - 1, ";", "")
Next
Return WritePrivateProfileString(lpAppName, lpKeyName, sCryptoValues, If(Not String.IsNullOrWhiteSpace(sFilePath), sFilePath, m_sMachiningFilePath))
Else
Return False
End If
End Function
Friend Function ReadMaterialParamString(lpAppName As String, lpKeyName As String, lpDefault As String, ByRef lpString As String, Optional sFilePath As String = "") As Integer
Dim nResult As Integer = GetPrivateProfileString(lpAppName, lpKeyName, lpDefault, lpString, If(Not String.IsNullOrWhiteSpace(sFilePath), sFilePath, m_sMaterialFilePath))
If Not String.IsNullOrWhiteSpace(lpString) Then
lpString = EgwCrypto.PowerDecryptString(lpString, m_Salt)
Else
lpString = ""
End If
Return nResult
End Function
Friend Function ReadMaterialParamDouble(lpAppName As String, lpKeyName As String, dDefault As Double, Optional sFilePath As String = "") As Double
Dim sParam As String = ""
Dim dParam As Double = dDefault
ReadMaterialParamString(lpAppName, lpKeyName, dDefault, sParam, sFilePath)
StringToDouble(sParam, dParam)
Return dParam
End Function
Friend Function WriteMaterialParam(lpAppName As String, lpKeyName As String, lpString As String, Optional sFilePath As String = "") As Boolean
Return WritePrivateProfileString(lpAppName, lpKeyName, EgwCrypto.PowerEncryptString(lpString, m_Salt), If(Not String.IsNullOrWhiteSpace(sFilePath), sFilePath, m_sMaterialFilePath))
End Function
#End Region 'Methods
End Module
+482
View File
@@ -0,0 +1,482 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:EgtWindowMaker"
xmlns:Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero2"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
xmlns:EgtFloating="clr-namespace:EgtWPFLib5.EgtFloating;assembly=EgtWPFLib5"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<!--
Assign a Key to every Panel ViewModel to use
it in xaml file(ProjectView.xaml).
-->
<local:MainWindowVM x:Key="MainWindowVM"/>
<local:HomePageVM x:Key="HomePageVM"/>
<local:CRMPageVM x:Key="CRMPageVM"/>
<local:EstimatingPageVM x:Key="EstimatingPageVM"/>
<local:EstimationDetailPageVM x:Key="EstimationDetailPageVM"/>
<local:EstimationListPageVM x:Key="EstimationListPageVM"/>
<local:ProducingPageVM x:Key="ProducingPageVM"/>
<local:ProjManagerVM x:Key="ProjManagerVM"/>
<local:ManageWindowVM x:Key="ManageWindowVM"/>
<EgtWPFLib5:ShowPanelVM x:Key="ShowPanelVM"/>
<EgtWPFLib5:ViewPanelVM x:Key="ViewPanelVM"/>
<!--Colori predefiniti-->
<SolidColorBrush x:Key="EgaltechBlue1" Color="#FF4D84C4" />
<SolidColorBrush x:Key="EgaltechBlue2" Color="#FF7096CE" />
<SolidColorBrush x:Key="EgaltechBlue3" Color="#FF90ABD9" />
<SolidColorBrush x:Key="EgaltechBlue4" Color="#FFB2C3E4" />
<SolidColorBrush x:Key="EgaltechWhite" Color="#FFFFFFFF" />
<SolidColorBrush x:Key="EgaltechGray" Color="#FF585858" />
<SolidColorBrush x:Key="EgaltechLightGray" Color="LightGray" />
<SolidColorBrush x:Key="EgaltechUltralightGray" Color="#FFF2F2F2" />
<SolidColorBrush x:Key="EgaltechGreen" Color="#FF00FF00" />
<!--#838383-->
<Color x:Key="EgtWindow.Color.Gray" R="131" G="131" B="131" A="255"/>
<SolidColorBrush x:Key="EgtWindow.Gray" Color="{StaticResource EgtWindow.Color.Gray}" />
<!--#5480a5-->
<Color x:Key="EgtWindow.Color.DarkBlue" R="83" G="128" B="165" A="255"/>
<SolidColorBrush x:Key="EgtWindow.DarkBlue" Color="{StaticResource EgtWindow.Color.DarkBlue}" />
<!--#e2eaf6-->
<Color x:Key="EgtWindow.Color.LightBlue" R="226" G="234" B="246" A="255"/>
<SolidColorBrush x:Key="EgtWindow.LightBlue" Color="{StaticResource EgtWindow.Color.LightBlue}" />
<!--#eeeeee-->
<Color x:Key="EgtWindow.Color.LightGray" R="238" G="238" B="238" A="255"/>
<SolidColorBrush x:Key="EgtWindow.LightGray" Color="{StaticResource EgtWindow.Color.LightGray}" />
<!--#afc5d6-->
<Color x:Key="EgtWindow.Color.VeryLightGray" R="175" G="197" B="214" A="255"/>
<SolidColorBrush x:Key="EgtWindow.VeryLightGray" Color="{StaticResource EgtWindow.Color.VeryLightGray}" />
<!--#92908d-->
<Color x:Key="Icarus_Gray_Color" R="146" G="144" B="141" A="255"/>
<SolidColorBrush x:Key="Icarus_Gray" Color="{StaticResource Icarus_Gray_Color}" />
<!--#3c89c9-->
<Color x:Key="Icarus_LightBlue_Color" R="60" G="137" B="201" A="255"/>
<SolidColorBrush x:Key="Icarus_LightBlue" Color="{StaticResource Icarus_LightBlue_Color}" />
<!--#2e5a81-->
<Color x:Key="Icarus_Blue_Color" R="46" G="90" B="129" A="255"/>
<SolidColorBrush x:Key="Icarus_Blue" Color="{StaticResource Icarus_Blue_Color}" />
<!--#50A388-->
<Color x:Key="Icarus_Green_Color" R="80" G="163" B="136" A="255"/>
<SolidColorBrush x:Key="Icarus_Green" Color="{StaticResource Icarus_Green_Color}" />
<!--#BC373E-->
<Color x:Key="Icarus_Orange_Color" R="188" G="55" B="62" A="255"/>
<SolidColorBrush x:Key="Icarus_Orange" Color="{StaticResource Icarus_Orange_Color}" />
<!--#A74C77-->
<Color x:Key="Icarus_Purple_Color" R="167" G="76" B="119" A="255"/>
<SolidColorBrush x:Key="Icarus_Purple" Color="{StaticResource Icarus_Purple_Color}" />
<!--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>
<GridLength x:Key="TitleBarHeight">30</GridLength>
<Thickness x:Key="WindowBorder_Thickness">2</Thickness>
<sys:Double x:Key="WindowBorder_Height">2</sys:Double>
<!-- ______________________________________________________________________________________________________________________________________________ -->
<!-- FocusVisual standard-->
<Style x:Key="FocusVisual">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Margin="2" SnapsToDevicePixels="true" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!--#region USERCONTROL -->
<!--#region Button-->
<!--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 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="Button.EffectorWindow.TitleBar" TargetType="{x:Type Button}">
<Setter Property="Foreground" Value="White" />
<Setter Property="Padding" Value="0" />
<Setter Property="WindowChrome.IsHitTestVisibleInChrome" Value="True" />
<Setter Property="IsTabStop" Value="False" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="border"
Background="Transparent"
BorderThickness="0"
SnapsToDevicePixels="true">
<ContentPresenter x:Name="contentPresenter"
Margin="0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Focusable="False"
RecognizesAccessKey="True" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="border" Property="Background" Value="{DynamicResource MouseOverOverlayBackgroundBrush}" />
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter TargetName="border" Property="Background" Value="{DynamicResource PressedOverlayBackgroundBrush}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="Button.HomePage" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="350"/>
<Setter Property="Width" Value="350"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderThickness" Value="15"/>
<Setter Property="BorderBrush" Value="{StaticResource EgtWindow.Gray}"/>
<Setter Property="FontSize" Value="60"/>
<Setter Property="FontWeight" Value="Medium"/>
<Setter Property="Foreground" Value="{StaticResource EgtWindow.Gray}"/>
<Setter Property="Margin" Value="20"/>
<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">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Border x:Name="internal"
Background="{StaticResource EgtWindow.Gray}"
BorderThickness="0"
Margin="5"
Height="50"
VerticalAlignment="Top"/>
<ContentPresenter x:Name="contentPresenter" Grid.Row="1" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Grid>
</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="internal" Value="{StaticResource EgtWindow.DarkBlue}"/>
<Setter Property="Background" TargetName="border" Value="{StaticResource EgtWindow.LightBlue}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource EgtWindow.DarkBlue}"/>
<Setter Property="Foreground" Value="{StaticResource EgtWindow.DarkBlue}"/>
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter Property="Background" TargetName="internal" Value="{StaticResource EgtWindow.DarkBlue}"/>
<Setter Property="Background" TargetName="border" Value="{StaticResource EgtWindow.LightBlue}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource EgtWindow.DarkBlue}"/>
<Setter Property="Foreground" Value="{StaticResource EgtWindow.DarkBlue}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Background" TargetName="internal" Value="{StaticResource Button.Disabled.Border}"/>
<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>
<!--#endregion Button-->
<Style x:Key="Button.CRMPage" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="40"/>
<Setter Property="Width" Value="120"/>
<Setter Property="Background" Value="{StaticResource EgtWindow.LightGray}"/>
<Setter Property="BorderThickness" Value="0"/>
<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 EgtWindow.DarkBlue}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.MouseOver.Border}"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter Property="Background" TargetName="border" Value="{StaticResource EgtWindow.DarkBlue}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Pressed.Border}"/>
<Setter Property="Foreground" 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="Button.EstimationDetail.WindowList" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="40"/>
<Setter Property="Width" Value="160"/>
<Setter Property="Background" Value="{StaticResource EgtWindow.LightBlue}"/>
<Setter Property="BorderThickness" Value="0"/>
<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 EgtWindow.DarkBlue}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.MouseOver.Border}"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter Property="Background" TargetName="border" Value="{StaticResource EgtWindow.DarkBlue}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Pressed.Border}"/>
<Setter Property="Foreground" 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="Button.ManageWindow.LeftBar" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="30"/>
<Setter Property="BorderThickness" Value="0"/>
</Style>
<Style x:Key="Button.Confirm" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="30"/>
<Setter Property="Width" Value="70"/>
<Setter Property="BorderThickness" Value="0"/>
</Style>
<Style x:Key="ProjManager_Button" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="25"/>
<Setter Property="Width" Value="25"/>
<Setter Property="Background" Value="White"/>
<Setter Property="BorderThickness" Value="0"/>
</Style>
<Style x:Key="ToolBar_Button" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="30"/>
<Setter Property="Width" Value="30"/>
<Setter Property="Background" Value="White"/>
<Setter Property="BorderThickness" Value="0"/>
</Style>
<Style x:Key="ToggleButton.ToolBar.DShowMode" TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="Height" Value="30"/>
<Setter Property="Width" Value="50"/>
<Setter Property="BorderThickness" Value="0"/>
</Style>
<Style x:Key="ToolBar_ToggleButton" TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="Height" Value="30"/>
<Setter Property="Width" Value="30"/>
<Setter Property="Background" Value="White"/>
<Setter Property="BorderThickness" Value="0"/>
</Style>
<!-- Image -->
<!--#region Image-->
<Style x:Key="Button.Image.DoorList" TargetType="{x:Type Image}">
<Setter Property="Stretch" Value="Uniform" />
</Style>
<!--#endregion Image-->
<Style x:Key="Button_Image" TargetType="{x:Type Image}">
<Setter Property="Stretch" Value="Uniform" />
</Style>
<!-- ContextMenu -->
<Style x:Key="Icarus_ContextMenu" TargetType="{x:Type ContextMenu}">
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="Grid.IsSharedSizeScope" Value="true" />
<Setter Property="HasDropShadow" Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ContextMenu}">
<Border x:Name="Border"
CornerRadius="4"
Background="White"
BorderBrush="{StaticResource Icarus_Gray}"
BorderThickness="1"
Padding="4">
<StackPanel IsItemsHost="True"
KeyboardNavigation.DirectionalNavigation="Cycle" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="HasDropShadow" Value="true">
<Setter TargetName="Border" Property="Padding" Value="4" />
<Setter TargetName="Border" Property="CornerRadius" Value="4" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="TextBlock.DataGridTextColumn" TargetType="{x:Type TextBlock}">
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<Style x:Key="TextBlock.EstimationDetail" TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<Style x:Key="TextBlock.ManageWindow" TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<Style x:Key="TextBlock.ManageWindow.SelArea" TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="10"/>
</Style>
<Style x:Key="ComboBox.EstimationDetail" TargetType="{x:Type ComboBox}">
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<Style x:Key="ComboBox.ManageWindow" TargetType="{x:Type ComboBox}">
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<Style x:Key="TextBox.ManageWindow" TargetType="{x:Type TextBox}">
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<Style x:Key="TabItem.EstimationDetail" TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}">
<Setter Property="Height" Value="40"/>
<Setter Property="Width" Value="150"/>
</Style>
<Style x:Key="TabItem.ManageWindow" TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}">
<Setter Property="Height" Value="40"/>
<Setter Property="Width" Value="100"/>
</Style>
<ControlTemplate x:Key="ControlTemplate.TabControl.NoHeader" TargetType="{x:Type TabControl}">
<Grid x:Name="templateRoot" ClipToBounds="true" SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local">
<Border x:Name="contentPanel" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" KeyboardNavigation.DirectionalNavigation="Contained" KeyboardNavigation.TabIndex="1" KeyboardNavigation.TabNavigation="Local">
<ContentPresenter x:Name="PART_SelectedContentHost" ContentSource="SelectedContent" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="TextElement.Foreground" TargetName="templateRoot" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
<Style x:Key="TabControl.NoHeader" TargetType="{x:Type TabControl}">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Padding" Value="0"/>
<Setter Property="Template" Value="{StaticResource ControlTemplate.TabControl.NoHeader}"/>
</Style>
<Style x:Key="Expander.CheckBoxHeader" TargetType="{x:Type Expander}">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Expander}">
<Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="3" SnapsToDevicePixels="true">
<DockPanel>
<CheckBox x:Name="HeaderSite" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" ContentTemplateSelector="{TemplateBinding HeaderTemplateSelector}" DockPanel.Dock="Top" FontStretch="{TemplateBinding FontStretch}" Foreground="{TemplateBinding Foreground}" FocusVisualStyle="{StaticResource FocusVisual}" FontStyle="{TemplateBinding FontStyle}" FontFamily="{TemplateBinding FontFamily}" FontWeight="{TemplateBinding FontWeight}" FontSize="{TemplateBinding FontSize}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource Mode=TemplatedParent}}" Margin="1,1,5,1" MinWidth="0" MinHeight="0" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
<ContentPresenter x:Name="ExpandSite" DockPanel.Dock="Bottom" Focusable="false" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Visibility="Collapsed"/>
</DockPanel>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsExpanded" Value="true">
<Setter Property="Visibility" TargetName="ExpandSite" Value="Visible"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!--#endregion USERCONTROL-->
</ResourceDictionary>
+102
View File
@@ -0,0 +1,102 @@
Imports System.Globalization
Public Class Dictionary
Public Shared ReadOnly MySceneHostVM As String = "MySceneHostVM"
#Region "Colors"
Private m_Omag_Red As SolidColorBrush = Brushes.Red
Public ReadOnly Property Omag_Red As SolidColorBrush
Get
Return m_Omag_Red
End Get
End Property
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_Icarus_Gray As SolidColorBrush = Application.Current.FindResource("Icarus_Gray")
Public Shared ReadOnly Property Icarus_Gray As SolidColorBrush
Get
Return m_Icarus_Gray
End Get
End Property
Private Shared m_Icarus_LightBlue As SolidColorBrush = Application.Current.FindResource("Icarus_LightBlue")
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_Orange As SolidColorBrush = Application.Current.FindResource("Icarus_Orange")
Public Shared ReadOnly Property Icarus_Orange As SolidColorBrush
Get
Return m_Icarus_Orange
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

Some files were not shown because too many files have changed in this diff Show More