aggiunto hardware

This commit is contained in:
Annamaria Sassi
2025-09-10 18:45:57 +02:00
parent 618c1acc4f
commit 036d50b29b
11 changed files with 871 additions and 682 deletions
+186 -149
View File
@@ -219,7 +219,7 @@
<div class="card-body py-2">
<h5 class="card-title">Frame</h5>
<div class="input-group mb-2">
<button class="btn btn-outline-secondary btn-sm" @onclick="() => FrameWindow.AddSplit()">Aggiungi split</button>
<button class="btn btn-outline-secondary btn-sm" @onclick="() => FrameWindow.AddSplit(FrameWindow)">Aggiungi split</button>
</div>
</div>
</div>
@@ -257,7 +257,7 @@
<div class="col-sm-6">
<div class="border mb-2">
<div class="card-body py-2">
@if (currSplit.ParentArea is Splitted || currSplit.ParentArea is Sash)
@if ((currSplit.ParentArea is Splitted || currSplit.ParentArea is Sash) && SashList.Count > 0)
{
@for (int j = 0; j < SashList.Count; j++)
{
@@ -286,9 +286,12 @@
<div class="border mb-2">
<div class="card-body py-2">
<h5>Split</h5>
<div class="input-group mb-2 justify-content-center">
<button class="btn btn-outline-secondary btn-sm" @onclick="() => SwapTwoAree(currSplit)">Swap Aree</button>
</div>
@if (currSplit.nSplitQty == 1)
{
<div class="input-group mb-2 justify-content-center">
<button class="btn btn-outline-secondary btn-sm" @onclick="() => SwapTwoAree(currSplit)">Swap Aree</button>
</div>
}
<div class="input-group mb-2">
<span class="input-group-text" id="SplitQty@(m_SplitList.IndexOf(currSplit) + 1)">Number</span>
<input type="number" class="form-control" placeholder="0" aria-label="basic-addon1Split" @bind="@currSplit.nSplitQty">
@@ -348,8 +351,22 @@
<div class="border mb-2">
<div class="card-body py-2">
<h5>Area split</h5>
<div class="input-group mb-2">
<button class="btn btn-outline-secondary btn-sm" @onclick="() => currSplitted.AddSash()">Aggiungi sash</button>
<div class="row">
<div class="col-4">
<div class="input-group mb-2">
<button class="btn btn-outline-secondary btn-sm" @onclick="() => currSplitted.AddSash()">Aggiungi sash</button>
</div>
</div>
@for (int j = 0; j < SashList.Count; j++)
{
int Index = j;
<div class="col-4">
<div class="input-group mb-2">
<button class="btn btn-outline-secondary btn-sm" @onclick="() => CopySplitted(currSplitted, Index)">Copy sash @(j+1)</button>
</div>
</div>
}
</div>
</div>
</div>
@@ -488,163 +505,108 @@
}
else if (currStep == CompileStep.Sash)
{
@if (currSash > SashList.Count)
@if (currSash >= SashList.Count || currSash == -1)
{
currStep = CompileStep.Gerarchia;
}
Sash item = SashList[currSash];
<div class="container">
<div class="text-start display-4">
<div class="row">
<div class="col-sm-6">
<div class="input-group mb-2">
<span class="input-group-text" id="NumberSash@(SashList.IndexOf(item) + 1)">Number</span>
<input type="number" class="form-control" aria-label="NumberSash@(SashList.IndexOf(item) + 1)" @bind="@item.nSashQty">
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="border mb-2">
<div class="card-body py-2">
<h5 class="card-title">Orientation</h5>
<div class="input-group mb-2">
<label class="input-group-text" for="OrientationSash@(SashList.IndexOf(item) + 1)">Tipology</label>
<select class="form-select" id="OrientationSash@(SashList.IndexOf(item) + 1)" @bind="@item.SelOrientationSashTypeIndex">
<option value="0">Vertical</option>
<option value="1">Horizontal</option>
</select>
</div>
else
{
Sash item = SashList[currSash];
<div class="container">
<div class="text-start display-4">
<div class="row">
<div class="col-sm-6">
<div class="input-group mb-2">
<span class="input-group-text" id="NumberSash@(SashList.IndexOf(item) + 1)">Number</span>
<input type="number" class="form-control" aria-label="NumberSash@(SashList.IndexOf(item) + 1)" @bind="@item.nSashQty">
</div>
</div>
</div>
<div class="col-sm-6">
<div class="border mb-2">
<div class="card-body py-2">
<h5 class="card-title">Bottom rail</h5>
<div class="input-group mb-2">
<span class="input-group-text" id="BottomRailQty@(SashList.IndexOf(item) + 1)">Quantity</span>
<input type="number" class="form-control" aria-label="BottomRailQty" @bind="@item.SashBottomRailQty">
</div>
</div>
</div>
</div>
</div>
<div class="row">
@for (int i = 0; i <= item.SashList.Count / 2; i++)
{
for (int j = 0; j < 2 && (i * 2 + j <= item.SashList.Count - 1); j++)
{
SashDimension sash = item.SashList[i * 2 + j];
<div class="col-sm-6">
<div class="border mb-2">
<div class="card-body py-2">
@if (item.SashList.Count == 1)
{
<h5 class="card-title">Opening</h5>
}
else
{
<h5 class="card-title">Sash opening @(i * 2 + j + 1)</h5>
}
<div class="input-group mb-2">
<label class="input-group-text" for="OpeningSash@(i * 2 + j + 1)">Tipology</label>
<select class="form-select" id="OpeningSash@(i * 2 + j + 1)" @bind="@sash.SelOpeningTypeIndex">
<option value="0">A sinistra</option>
<option value="1">A destra</option>
<option value="2">Ad anta-ribalta sinistra</option>
<option value="3">Ad anta-ribalta destra</option>
<option value="4">Solo verso alto</option>
<option value="5">Solo verso basso</option>
<option value="6">Pivot</option>
<option value="7">Fissa</option>
<option value="8">Complanare sinistra</option>
<option value="9">Complanare destra</option>
<option value="10">Scorrevole sinistra</option>
<option value="11">Scorrevole destra</option>
</select>
</div>
<div class="input-group mb-2">
<span class="input-group-text">Dimension</span>
<input type="number" class="form-control" aria-label="DimensionSash" @bind="@sash.dDimension">
<span class="input-group-text">%</span>
</div>
<div class="d-flex justify-content-start fs-5 mb-2">
<div class="px-1">
<input class="form-check-input ml-auto" type="checkbox" name="Handle" id="HandleSashLabel@(i * 2 + j + 1)" checked="@sash.bHasHandle" @onclick="() => changeHandle(sash)">
</div>
<div class="px-2">
<label class="form-check-label fs-6 text-dark" for="HandleSashLabel@(i * 2 + j + 1)">Handle</label>
</div>
</div>
<div class="row d-grid gap-1 d-md-flex justify-content-md-center">
@for (int k = 1; k <= i*2+j; k++)
{
int IndexCopy = k;
int IndexModify = i * 2 + j;
<div class="col-sm-4">
<div class="input-group">
<button class="btn btn-outline-secondary btn-sm" @onclick="() => CopyContent(item, IndexCopy, IndexModify)">Copy @(k)</button>
</div>
</div>
}
</div>
</div>
</div>
</div>
}
}
</div>
<div class="row">
<div class="col-sm-6">
<div class="border mb-2">
<div class="card-body py-2">
<h5 class="card-title">Sash joints</h5>
<div class="row p-0 m-0 text-center">
<div class="col">
<button class="btn btn-outline-secondary btn-sm" @onclick="() => AllJointsFrame(1, 1)">Angled</button>
</div>
<div class="col">
<button class="btn btn-outline-secondary btn-sm" @onclick="() => AllJointsFrame(2, 1)">Horizontal</button>
</div>
<div class="col">
<button class="btn btn-outline-secondary btn-sm" @onclick="() => AllJointsFrame(3, 1)">Vertical</button>
</div>
</div>
@foreach (Joint joint in item.JointList)
{
<div class="row">
<div class="col-sm-6">
<div class="border mb-2">
<div class="card-body py-2">
<h5 class="card-title">Orientation</h5>
<div class="input-group mb-2">
<label class="input-group-text" for="IndexJoint@(item.JointList.IndexOf(joint) + 1)">@((positionJoints)(item.JointList.IndexOf(joint)))</label>
<select class="form-select" id="IndexJoint@(item.JointList.IndexOf(joint) + 1)" @bind="@joint.SelJointTypeIndex">
<option value="0">Angled</option>
<option value="1">Full H</option>
<option value="2">Full V</option>
<label class="input-group-text" for="OrientationSash@(SashList.IndexOf(item) + 1)">Tipology</label>
<select class="form-select" id="OrientationSash@(SashList.IndexOf(item) + 1)" @bind="@item.SelOrientationSashTypeIndex">
<option value="0">Vertical</option>
<option value="1">Horizontal</option>
</select>
</div>
}
</div>
</div>
</div>
<div class="col-sm-6">
<div class="border mb-2">
<div class="card-body py-2">
<h5 class="card-title">Bottom rail</h5>
<div class="input-group mb-2">
<span class="input-group-text" id="BottomRailQty@(SashList.IndexOf(item) + 1)">Quantity</span>
<input type="number" class="form-control" aria-label="BottomRailQty" @bind="@item.SashBottomRailQty">
</div>
</div>
</div>
</div>
</div>
<div class="col-sm-6">
@for (int i = 0; i < item.AreaList.Count; i++)
<div class="row">
@for (int i = 0; i <= item.SashList.Count / 2; i++)
{
Area anta;
@if (item.AreaList[i] is Splitted)
for (int j = 0; j < 2 && (i * 2 + j <= item.SashList.Count - 1); j++)
{
anta = item.AreaList[i];
}
else
{
anta = item;
}
@if (!(anta.AreaList[0] is Split))
{
<div class="col">
SashDimension sash = item.SashList[i * 2 + j];
<div class="col-sm-6">
<div class="border mb-2">
<div class="card-body py-2">
<h5 class="card-title">Anta @(i + 1)</h5>
@if (item.SashList.Count == 1)
{
<h5 class="card-title">Opening</h5>
}
else
{
<h5 class="card-title">Sash opening @(i * 2 + j + 1)</h5>
}
<div class="input-group mb-2">
<button class="btn btn-outline-secondary btn-sm" @onclick="() => anta.AddSplit()">Aggiungi split</button>
<label class="input-group-text" for="OpeningSash@(i * 2 + j + 1)">Tipology</label>
<select class="form-select" id="OpeningSash@(i * 2 + j + 1)" @bind="@sash.SelOpeningTypeIndex">
<option value="0">A sinistra</option>
<option value="1">A destra</option>
<option value="2">Ad anta-ribalta sinistra</option>
<option value="3">Ad anta-ribalta destra</option>
<option value="4">Solo verso alto</option>
<option value="5">Solo verso basso</option>
<option value="6">Pivot</option>
<option value="7">Fissa</option>
<option value="8">Complanare sinistra</option>
<option value="9">Complanare destra</option>
<option value="10">Scorrevole sinistra</option>
<option value="11">Scorrevole destra</option>
</select>
</div>
<div class="input-group mb-2">
<span class="input-group-text">Dimension</span>
<input type="number" class="form-control" aria-label="DimensionSash" @bind="@sash.dDimension">
<span class="input-group-text">%</span>
</div>
<div class="d-flex justify-content-start fs-5 mb-2">
<div class="px-1">
<input class="form-check-input ml-auto" type="checkbox" name="Handle" id="HandleSashLabel@(i * 2 + j + 1)" checked="@sash.bHasHandle" @onclick="() => changeHandle(sash)">
</div>
<div class="px-2">
<label class="form-check-label fs-6 text-dark" for="HandleSashLabel@(i * 2 + j + 1)">Handle</label>
</div>
</div>
<div class="row d-grid gap-1 d-md-flex justify-content-md-center">
@for (int k = 1; k <= i * 2 + j; k++)
{
int IndexCopy = k;
int IndexModify = i * 2 + j;
<div class="col-sm-4">
<div class="input-group">
<button class="btn btn-outline-secondary btn-sm" @onclick="() => CopyContent(item, IndexCopy, IndexModify)">Copy @(k)</button>
</div>
</div>
}
</div>
</div>
</div>
@@ -652,10 +614,85 @@
}
}
</div>
<div class="row">
<div class="col-sm-6">
<div class="border mb-2">
<div class="card-body py-2">
<h5 class="card-title">Sash joints</h5>
<div class="row p-0 m-0 text-center">
<div class="col">
<button class="btn btn-outline-secondary btn-sm" @onclick="() => AllJointsFrame(1, 1)">Angled</button>
</div>
<div class="col">
<button class="btn btn-outline-secondary btn-sm" @onclick="() => AllJointsFrame(2, 1)">Horizontal</button>
</div>
<div class="col">
<button class="btn btn-outline-secondary btn-sm" @onclick="() => AllJointsFrame(3, 1)">Vertical</button>
</div>
</div>
@foreach (Joint joint in item.JointList)
{
<div class="input-group mb-2">
<label class="input-group-text" for="IndexJoint@(item.JointList.IndexOf(joint) + 1)">@((positionJoints)(item.JointList.IndexOf(joint)))</label>
<select class="form-select" id="IndexJoint@(item.JointList.IndexOf(joint) + 1)" @bind="@joint.SelJointTypeIndex">
<option value="0">Angled</option>
<option value="1">Full H</option>
<option value="2">Full V</option>
</select>
</div>
}
</div>
</div>
</div>
<div class="col-sm-6">
@for (int i = 0; i < item.AreaList.Count; i++)
{
Area anta;
@if (item.AreaList[i] is Splitted)
{
anta = item.AreaList[i];
}
else
{
anta = item;
}
@if (!(anta.AreaList[0] is Split))
{
<div class="col">
<div class="border mb-2">
<div class="card-body py-2">
<h5 class="card-title">Anta @(i + 1)</h5>
<div class="input-group mb-2">
<button class="btn btn-outline-secondary btn-sm" @onclick="() => anta.AddSplit(anta)">Aggiungi split</button>
</div>
</div>
</div>
</div>
}
}
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="border mb-2">
<div class="card-body py-2">
<h5 class="card-title">Hardware</h5>
<div class="input-group mb-2">
<label class="input-group-text" for="Hardware">Tipology</label>
<select class="form-select" id="Hardware">
@foreach (var hw in item.HardwareList)
{
<option value="@hw.sName">@hw.sName</option>
}
</select>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
}
}
else if (currStep == CompileStep.Fill)
{
+43 -13
View File
@@ -65,6 +65,10 @@ namespace WebWindowComplex
m_ItemTableList = new List<ItemTable>();
CreateWindowsList(m_CurrWindow.AreaList[0], false);
CreateElementTable(m_CurrWindow.AreaList[0], 1, 1, 1, 1);
foreach (var item in SashList)
{
item.RefreshHardwareList(IN_HardwareList, IN_FamilyHardware);
}
}
}
}
@@ -72,6 +76,12 @@ namespace WebWindowComplex
[Parameter]
public List<TemplateSelectDTO> IN_TemplateDTOList { get; set; } = null!;
[Parameter]
public string IN_FamilyHardware { get; set; } = null;
[Parameter]
public List<Hardware> IN_HardwareList { get; set; } = null;
[Parameter]
public string LiveSVG
{
@@ -117,6 +127,14 @@ namespace WebWindowComplex
Nero
}
protected enum positionJoints
{
BL = 0, // Bottom Left
BR = 1, // Bottom Right
TR, // Top Right
TL // Top Left
}
#endregion Protected Enums
#region Protected Properties
@@ -243,7 +261,7 @@ namespace WebWindowComplex
// popolo le liste Fill, Sash e Split
CreateWindowsList(m_CurrWindow.AreaList[0], false);
CreateElementTable(m_CurrWindow.AreaList[0], 1, 1, 1, 1);
//currSash = -1;
currSash = -1;
await DoPreviewSvg();
}
@@ -565,14 +583,35 @@ namespace WebWindowComplex
await DoPreviewSvg();
}
private void CopyContent(Sash sashItem, int IndexCopy, int IndexModify)
/// <summary>
/// Metodo per copiare contenuto di un'anta in un'altra anta
/// </summary>
/// <param name="sashItem">Sash dove si torva anta </param>
/// <param name="IndexCopy">Indice dell'anta che si copia</param>
/// <param name="IndexModify">Indice dell'anta che si modifica</param>
private async Task CopyContent(Sash sashItem, int IndexCopy, int IndexModify)
{
// Anta selezionata
Area sashSplitted = sashItem.AreaList[IndexModify];
// Rimuovo riempimento da anta selezionata
sashItem.AreaList[IndexModify].AreaList.RemoveAt(0);
sashSplitted.AreaList.RemoveAt(0);
// Creo la copia dell'anta scelta
Area a = sashItem.AreaList[IndexCopy-1].AreaList[0].Copy();
Area a = sashItem.AreaList[IndexCopy-1].AreaList[0].Copy(sashSplitted);
// Aggiungo copia all'anta selezionata
sashItem.AreaList[IndexModify].AreaList.Add(a);
await DoPreviewSvg();
}
private async Task CopySplitted(Splitted currSplitted, int numSash)
{
//Rimuovo contenuto di Splitted
currSplitted.AreaList.RemoveAll(i => i != null);
// Copio sash
Area a = SashList[numSash].Copy(currSplitted);
a.SetParentArea(currSplitted);
// Aggiungo copia a Splitted
currSplitted.AreaList.Add(a);
await DoPreviewSvg();
}
private async Task SwapTwoAree(Area currArea)
@@ -581,7 +620,6 @@ namespace WebWindowComplex
await DoPreviewSvg();
}
#endregion Protected Methods
#region Private Fields
@@ -609,14 +647,6 @@ namespace WebWindowComplex
private int m_maxCol = 0;
private int m_maxRow = 0;
private enum positionJoints
{
BL = 0, // Bottom Left
BR = 1, // Bottom Right
TR, // Top Right
TL // Top Left
}
#endregion Private Fields
#region Private Properties
+212 -187
View File
@@ -155,7 +155,7 @@ namespace WebWindowComplex
internal abstract JsonArea Serialize();
public void AddSplit()
public void AddSplit(Area ParentArea)
{
List<Area> ContentArea = new List<Area>();
// Salvo gli oggetti già presenti e li cancello da AreaList
@@ -171,17 +171,19 @@ namespace WebWindowComplex
List<Splitted> newSplittedList = new List<Splitted>();
for (int i = 0; i < 2; i++)
newSplittedList.Add(Splitted.CreateSplitted(SplitArea));
// Inserisco nelle aree Splitted il Fill salvato e un Fill uguale (e setto ParentArea)
// Inserisco nelle aree Splitted il Fill salvato e un Fill uguale (e setto ParentArea del fill)
ContentArea[0].SetParentArea(newSplittedList[0]);
newSplittedList[0].AreaList.Add(ContentArea[0]);
newSplittedList[0].AreaList[0].SetParentArea(newSplittedList[0]);
if (ContentArea[0] is Fill)
{
Fill fill2 = (Fill)ContentArea[0];
newSplittedList[1].AreaList.Add(Fill.CreateFill(newSplittedList[1], fill2.FillType));
Fill fill1 = (Fill)ContentArea[0];
Fill fill2 = Fill.CreateFill(newSplittedList[1], fill1.FillType);
newSplittedList[1].AreaList.Add(fill2);
}
else
{
newSplittedList[1].AreaList.Add(Fill.CreateFill(newSplittedList[1], FillTypes.GLASS));
Fill fill2 = Fill.CreateFill(newSplittedList[1], FillTypes.GLASS);
newSplittedList[1].AreaList.Add(fill2);
}
// All'area Split aggiunto le due aree Splitted
for (int i = 0; i < 2; i++)
@@ -233,7 +235,7 @@ namespace WebWindowComplex
}
}
public abstract Area Copy();
public abstract Area Copy(Area ParentArea);
}
public class Frame : Area
@@ -636,7 +638,7 @@ namespace WebWindowComplex
}
}
public override Frame Copy()
public override Frame Copy(Area ParentArea)
{
return null;
}
@@ -700,9 +702,7 @@ namespace WebWindowComplex
}
else
{
// Se tolgo singola anta, ma tengo split
SashList.RemoveAt(0);
}
}
if(m_SashList.Count == 0)
@@ -1063,107 +1063,107 @@ namespace WebWindowComplex
}
}
//private Hardware m_SelHardware;
//public Hardware SelHardware
//{
// get
// {
// return m_SelHardware;
// }
// set
// {
// m_SelHardware = value;
// if (m_SelHardware != null && m_SelHardware.sId != "000000")
// {
// string sHwdOptPath = "";
// var gf = EgtLuaCreateGlobTable("WDG");
// var tft = EgtLuaSetGlobIntVar("WDG.AREAID", m_nAreaId);
// var tfy = EgtLuaSetGlobStringVar("WDG.HDWFAVOURITE", value.sId);
// SashDimension HandleSash = m_SashList.FirstOrDefault(x => x.bHasHandle);
// string sHandle = "Dx";
// switch (GetOpeningSide(HandleSash.OpeningType))
// {
// case object _ when OpeningSides.LEFT:
// {
// sHandle = "Sx";
// break;
// }
private Hardware m_SelHardware;
public Hardware SelHardware
{
get
{
return m_SelHardware;
}
set
{
m_SelHardware = value;
// if (m_SelHardware != null && m_SelHardware.sId != "000000")
// {
// string sHwdOptPath = "";
// var gf = EgtLuaCreateGlobTable("WDG");
// var tft = EgtLuaSetGlobIntVar("WDG.AREAID", m_nAreaId);
// var tfy = EgtLuaSetGlobStringVar("WDG.HDWFAVOURITE", value.sId);
// SashDimension HandleSash = m_SashList.FirstOrDefault(x => x.bHasHandle);
// string sHandle = "Dx";
// switch (GetOpeningSide(HandleSash.OpeningType))
// {
// case object _ when OpeningSides.LEFT:
// {
// sHandle = "Sx";
// break;
// }
// case object _ when OpeningSides.RIGHT:
// {
// sHandle = "Dx";
// break;
// }
// }
// var tfd = EgtLuaSetGlobStringVar("WDG.HDWHANDLE", sHandle);
// var tlt = EgtLuaCallFunction("WinCreate_GetHardwareOptionPath");
// var tltf = EgtLuaGetGlobStringVar("WDG.HWDOPTPATH", sHwdOptPath);
// if (!string.IsNullOrWhiteSpace(sHwdOptPath))
// {
// XmlSerializer serializer = new XmlSerializer(typeof(ParametriOpzioni));
// ParametriOpzioni HwdOptions = null/* TODO Change to default(_) if this is not a reference type */;
// string sHdwOptPath = Path.ChangeExtension(sHwdOptPath, ".opt");
// bool bHdwOptFound = false;
// for (var WaitIndex = 0; WaitIndex <= 100; WaitIndex++)
// {
// if (File.Exists(sHdwOptPath))
// {
// bHdwOptFound = true;
// break;
// }
// System.Threading.Thread.Sleep(100);
// }
// if (bHdwOptFound)
// {
// string sHwdOptText = "";
// try
// {
// sHwdOptText = File.ReadAllText(sHdwOptPath);
// }
// catch (Exception ex)
// {
// EgtOutLog("Hardware file opt not found or read!");
// }
// if (!string.IsNullOrWhiteSpace(sHwdOptText))
// {
// using (TextReader reader = new StringReader(sHwdOptText))
// {
// HwdOptions = serializer.Deserialize(reader);
// }
// if (!IsNothing(HwdOptions))
// {
// m_HwdOptionList.Clear();
// foreach (var HdwOption in HwdOptions.Items)
// m_HwdOptionList.Add(new AGBOption(HdwOption));
// NotifyPropertyChanged(nameof(HwdOptionList));
// }
// }
// }
// var ud = EgtLuaResetGlobVar("WDG");
// }
// }
// }
//}
// case object _ when OpeningSides.RIGHT:
// {
// sHandle = "Dx";
// break;
// }
// }
// var tfd = EgtLuaSetGlobStringVar("WDG.HDWHANDLE", sHandle);
// var tlt = EgtLuaCallFunction("WinCreate_GetHardwareOptionPath");
// var tltf = EgtLuaGetGlobStringVar("WDG.HWDOPTPATH", sHwdOptPath);
// if (!string.IsNullOrWhiteSpace(sHwdOptPath))
// {
// XmlSerializer serializer = new XmlSerializer(typeof(ParametriOpzioni));
// ParametriOpzioni HwdOptions = null/* TODO Change to default(_) if this is not a reference type */;
// string sHdwOptPath = Path.ChangeExtension(sHwdOptPath, ".opt");
// bool bHdwOptFound = false;
// for (var WaitIndex = 0; WaitIndex <= 100; WaitIndex++)
// {
// if (File.Exists(sHdwOptPath))
// {
// bHdwOptFound = true;
// break;
// }
// System.Threading.Thread.Sleep(100);
// }
// if (bHdwOptFound)
// {
// string sHwdOptText = "";
// try
// {
// sHwdOptText = File.ReadAllText(sHdwOptPath);
// }
// catch (Exception ex)
// {
// EgtOutLog("Hardware file opt not found or read!");
// }
// if (!string.IsNullOrWhiteSpace(sHwdOptText))
// {
// using (TextReader reader = new StringReader(sHwdOptText))
// {
// HwdOptions = serializer.Deserialize(reader);
// }
// if (!IsNothing(HwdOptions))
// {
// m_HwdOptionList.Clear();
// foreach (var HdwOption in HwdOptions.Items)
// m_HwdOptionList.Add(new AGBOption(HdwOption));
// NotifyPropertyChanged(nameof(HwdOptionList));
// }
// }
// }
// var ud = EgtLuaResetGlobVar("WDG");
// }
// }
}
}
//internal void SetSelHardware(Hardware value)
//{
// m_SelHardware = value;
//}
internal void SetSelHardware(Hardware value)
{
m_SelHardware = value;
}
//internal void SetSelHardwareFromId(string sId)
//{
// m_SelHardware = m_HardwareList.FirstOrDefault(x => x.sId == sId);
// if (IsNothing(m_SelHardware))
// m_SelHardware = m_HardwareList(0);
//}
internal void SetSelHardwareFromId(string sId)
{
m_SelHardware = m_HardwareList.FirstOrDefault(x => x.sId == sId);
if (m_SelHardware != null)
m_SelHardware = m_HardwareList[0];
}
//internal void SetFirstHardware()
//{
// if (m_HardwareList.Count > 0)
// {
// m_SelHardware = m_HardwareList(0);
// }
//}
internal void SetFirstHardware()
{
if (m_HardwareList.Count > 0)
{
m_SelHardware = m_HardwareList[0];
}
}
private ObservableCollection<AGBOption> m_HwdOptionList = new ObservableCollection<AGBOption>();
public ObservableCollection<AGBOption> HwdOptionList
@@ -1197,6 +1197,11 @@ namespace WebWindowComplex
//NewSash.SetFirstHardware();
return NewSash;
}
private string FindSashShape()
{
// Return "R"
return "RECTANGLE";
}
internal OpeningTypes GetOpeningType(Openings OpeningType)
{
@@ -1251,109 +1256,120 @@ namespace WebWindowComplex
private string ConvertOpeningType()
{
if (m_SashList.Any(x => GetOpeningType(x.OpeningType) == OpeningTypes.TILTTURN))
return "AR";
if(m_SashList.Count > 1)
{
if (GetOpeningType(m_SashList[0].OpeningType) == OpeningTypes.TURNONLY)
return "ANTA_BANDIERA";
else
return "ANTA_RIBALTA";
}
else
{
switch (GetOpeningType(m_SashList[0].OpeningType))
{
case OpeningTypes.TILTTURN:
{
return "ANTA_RIBALTA";
}
case OpeningTypes.TURNONLY:
{
return "AB";
return "ANTA_BANDIERA";
}
case OpeningTypes.TILTONLY:
{
return "VA";
return "VASISTAS";
}
case OpeningTypes.PIVOT:
{
return "BI";
return "PIVOT";
}
case OpeningTypes.COMPLANARSLIDE:
{
return "CO";
return "COMPLANARE";
}
case OpeningTypes.LIFTSLIDE:
{
return "AS";
return "ALZANTE_SCORREVOLE";
}
default:
{
return "";
}
}
}
}
//internal void RefreshHardwareList()
//{
// m_HardwareList.Clear();
// string sSashShape = FindSashShape();
// string sOpeningType = ConvertOpeningType();
// m_HardwareList = new ObservableCollection<Hardware>(from Hardware in Map.refManageWindowVM.HardwareList
// where Hardware.sId == "000000" || (Hardware.nSashQty == nSashQty && Hardware.sShape == sSashShape && Hardware.sOpeningType == sOpeningType)
// select Hardware);
//}
public void RefreshHardwareList(List<Hardware> HardwareCompleteList, string nameFamily)
{
m_HardwareList.Clear();
string sSashShape = FindSashShape();
string sOpeningType = ConvertOpeningType();
m_HardwareList = new ObservableCollection<Hardware>(from Hardware in HardwareCompleteList
where Hardware.sId == "000000" || (Hardware.sFamily == nameFamily && Hardware.nSashQty == nSashQty && Hardware.sShape == sSashShape && Hardware.sOpeningType == sOpeningType)
select Hardware);
}
internal void RefreshHardwareOptionList()
{
m_HwdOptionList.Clear();
}
internal OpeningSides GetOpeningSide(Openings OpeningType)
//internal OpeningSides GetOpeningSide(Openings OpeningType)
//{
// switch (OpeningType)
// {
// case Openings.TURNONLY_LEFT:
// case Openings.TILTTURN_LEFT:
// case Openings.TILTONLY_TOP:
// case Openings.COMPLANARSLIDE_LEFT:
// case Openings.LIFTSLIDE_LEFT:
// {
// return OpeningSides.LEFT;
// }
// case Openings.TURNONLY_RIGHT:
// case Openings.TILTTURN_RIGHT:
// case Openings.TILTONLY_BOTTOM:
// case Openings.COMPLANARSLIDE_RIGHT:
// case Openings.LIFTSLIDE_RIGHT:
// {
// return OpeningSides.RIGHT;
// }
// default:
// {
// return OpeningSides.NULL;
// }
// }
//}
public override Sash Copy(Area newParentArea)
{
switch (OpeningType)
{
case Openings.TURNONLY_LEFT:
case Openings.TILTTURN_LEFT:
case Openings.TILTONLY_TOP:
case Openings.COMPLANARSLIDE_LEFT:
case Openings.LIFTSLIDE_LEFT:
{
return OpeningSides.LEFT;
}
case Openings.TURNONLY_RIGHT:
case Openings.TILTTURN_RIGHT:
case Openings.TILTONLY_BOTTOM:
case Openings.COMPLANARSLIDE_RIGHT:
case Openings.LIFTSLIDE_RIGHT:
{
return OpeningSides.RIGHT;
}
default:
{
return OpeningSides.NULL;
}
}
}
public override Sash Copy()
{
Sash newSash = new Sash(ParentArea, m_ParentWindow);
Sash newSash = new Sash(newParentArea, m_ParentWindow);
newSash.SetAreaType(AreaType);
// Imposta la quantità di ante e definisce SashDimension di ogni anta ai valori di default
newSash.SetSashQty(nSashQty);
newSash.SetIsSashVertical(bIsSashVertical);
newSash.SetOrientationSashType(OrientationSashType);
newSash.SetSashBottomRailQty(SashBottomRailQty);
foreach (var item in SashList)
for (int i = 0; i <SashList.Count; i++)
{
SashDimension dim = item.Copy();
newSash.SashList.Add(dim);
//Cancello SashDimension di default e aggiungo la copia
newSash.SashList.RemoveAt(i);
SashDimension newSashDim = SashList[i].Copy();
newSash.SashList.Insert(i,newSashDim);
}
foreach (var item in JointList)
{
Joint j = item.Copy();
newSash.JointList.Add(j);
Joint newJoint = item.Copy();
newSash.JointList.Add(newJoint);
}
foreach (var item in AreaList)
{
Area a = item.Copy();
newSash.AreaList.Add(a);
Area newArea = item.Copy(newSash);
newSash.AreaList.Add(newArea);
}
return newSash;
}
@@ -1416,19 +1432,17 @@ namespace WebWindowComplex
dLastDimension += m_SplitPositionList[SplitPositionList.Count - 1].dDimension;
SplitPositionList[SplitPositionList.Count - 1].SetDimension(dLastDimension);
}
for(var SplitIndex = AreaList.Count; SplitIndex <= SplitPositionList.Count - 1; SplitIndex++)
// Se aggiungo split devo aggiungere vetro nell'area splitted aggiunta
for (var SplitIndex = AreaList.Count; SplitIndex <= SplitPositionList.Count - 1; SplitIndex++)
{
AreaList.Add(Splitted.CreateSplitted(this));
if(AreaList[AreaList.Count - 2].AreaList[0] is Fill)
{
Fill f1 = (Fill)AreaList[AreaList.Count - 2].AreaList[0];
AreaList.Last().AreaList.Add(Fill.CreateFill(AreaList.Last(), f1.FillType));
}
else
AreaList.Last().AreaList.Add(Fill.CreateFill(AreaList.Last(), FillTypes.GLASS));
Fill newFill = new Fill(AreaList.Last(), ParentWindow);
newFill.SetFillType(FillTypes.GLASS);
newFill.SetAreaType(AreaTypes.FILL);
AreaList[AreaList.Count - 1].AreaList.Add(newFill);
}
// Se ho più di uno split, elimino l'ultimo
if(AreaList.Count > 2)
if (AreaList.Count > 2)
{
for (var SplitIndex = SplitPositionList.Count; SplitIndex <= AreaList.Count - 1; SplitIndex++)
{
@@ -1439,6 +1453,7 @@ namespace WebWindowComplex
else
{
Splitted s = (Splitted)AreaList[0];
s.SetParentArea(ParentArea);
ParentArea.AreaList.Add(s.AreaList[0]);
ParentArea.AreaList.Remove(this);
}
@@ -1559,15 +1574,15 @@ namespace WebWindowComplex
return Split;
}
public override Split Copy()
public override Split Copy(Area newParentArea)
{
Split newSplit = new Split(ParentArea, ParentWindow);
Split newSplit = new Split(newParentArea, ParentWindow);
newSplit.SetSplitQty(nSplitQty);
newSplit.SetSplitShape(SelSplitShape, true);
newSplit.SetAreaType(AreaType);
foreach(var item in AreaList)
{
Area a = item.Copy();
Area a = item.Copy(newSplit);
newSplit.AreaList.Add(a);
}
return newSplit;
@@ -1591,20 +1606,20 @@ namespace WebWindowComplex
{
}
internal static Splitted CreateSplitted(Area Area)
internal static Splitted CreateSplitted(Area ParentArea)
{
Splitted Splitted = new Splitted(Area, Area.ParentWindow);
Splitted Splitted = new Splitted(ParentArea, ParentArea.ParentWindow);
Splitted.SetAreaType(AreaTypes.SPLITTED);
return Splitted;
}
public override Splitted Copy()
public override Splitted Copy(Area newParentArea)
{
Splitted newSplitted = new Splitted(ParentArea, ParentWindow);
Splitted newSplitted = new Splitted(newParentArea, ParentWindow);
newSplitted.SetAreaType(AreaType);
foreach (var item in AreaList)
{
Area a = item.Copy();
Area a = item.Copy(newSplitted);
newSplitted.AreaList.Add(a);
}
return newSplitted;
@@ -1674,17 +1689,17 @@ namespace WebWindowComplex
{
}
internal static Fill CreateFill(Area Area, FillTypes FillType)
internal static Fill CreateFill(Area AreaParent, FillTypes FillType)
{
Fill Fill = new Fill(Area, Area.ParentWindow);
Fill Fill = new Fill(AreaParent, AreaParent.ParentWindow);
Fill.SetAreaType(AreaTypes.FILL);
Fill.SetFillType(FillType);
return Fill;
}
public override Fill Copy()
public override Fill Copy(Area newParentArea)
{
Fill newFill = new Fill(ParentArea, m_ParentWindow);
Fill newFill = new Fill(newParentArea, m_ParentWindow);
newFill.SetFillType(SelFillType);
newFill.SetAreaType(AreaType);
return newFill;
@@ -1835,6 +1850,15 @@ namespace WebWindowComplex
}
}
private string m_sFamily;
public string sFamily
{
get
{
return m_sFamily;
}
}
private string m_sName;
public string sName
{
@@ -1880,9 +1904,10 @@ namespace WebWindowComplex
}
}
public Hardware(string sId, string sName, string sOpeningType, string sShape, int nSashQty, int nSashPosition)
public Hardware(string sId, string sFamily, string sName, string sOpeningType, string sShape, int nSashQty, int nSashPosition)
{
m_sId = sId;
m_sFamily = sFamily;
m_sName = sName;
m_sOpeningType = sOpeningType;
m_sShape = sShape;
@@ -2123,7 +2148,7 @@ namespace WebWindowComplex
{
m_SelOpeningType = value;
//m_Parent.RefreshHardwareList();
m_Parent.RefreshHardwareOptionList();
//m_Parent.RefreshHardwareOptionList();
//m_Parent.SetFirstHardware();
}
}