Skip to content

Commit

Permalink
Refractoring + Added Import/Export HMIScreen/Popup
Browse files Browse the repository at this point in the history
  • Loading branch information
Parozzz committed Apr 21, 2022
1 parent 69270ed commit ec264db
Show file tree
Hide file tree
Showing 17 changed files with 644 additions and 206 deletions.
Binary file modified .vs/TiaAddIn-Spin/v17/.suo
Binary file not shown.
220 changes: 20 additions & 200 deletions TiaAddIn-Spin/AddIn.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@
using System.IO;
using System.Reflection;
using Siemens.Engineering.SW;
using Siemens.Engineering.Hmi.Screen;
using SpinAddin.Utility;
using System.Windows.Forms;

namespace SpinAddin
namespace SpinAddIn
{
public class AddIn : ContextMenuAddIn
{
Expand All @@ -18,6 +19,11 @@ public class AddIn : ContextMenuAddIn
private readonly TiaPortal _tiaPortal;
private readonly string _traceFilePath;

private readonly SpinAddinMenuRegistrationService plcBlockHandler;
private readonly SpinAddinMenuRegistrationService plcTagTableHandler;
private readonly SpinAddinMenuRegistrationService hmiScreenHandler;
private readonly SpinAddinMenuRegistrationService hmiPopupHandler;

public AddIn(TiaPortal tiaPortal) : base("TiaAddIn-Spin")
{
_tiaPortal = tiaPortal;
Expand All @@ -26,213 +32,27 @@ public AddIn(TiaPortal tiaPortal) : base("TiaAddIn-Spin")
var logDirectoryPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "TIA Add-Ins", assemblyName.Name, assemblyName.Version.ToString(), "Logs");
var logDirectory = Directory.CreateDirectory(logDirectoryPath);
_traceFilePath = Path.Combine(logDirectory.FullName, string.Concat(DateTime.Now.ToString("yyyyMMdd_HHmmss"), ".txt"));
}

protected override void BuildContextMenuItems(ContextMenuAddInRoot menuRoot)
{
menuRoot.Items.AddActionItem<PlcBlock>("Esporta Blocchi Singolarmente", ExportBlockClick);
menuRoot.Items.AddActionItem<PlcBlock>("Esporta Blocchi selez. su Cartella", ExportBlockFolderClick);
menuRoot.Items.AddActionItem<PlcBlock>("Importa Blocchi", ImportBlockClick);
menuRoot.Items.AddActionItem<PlcBlock>("Importa Cartella", ImportBlockFolderClick);

//menuRoot.Items.AddActionItem<DataBlock>("Esporta DB", ExportDBClick);
//menuRoot.Items.AddActionItem<DataBlock>("Importa DB", ImportDBClick);

menuRoot.Items.AddActionItem<PlcTagTable>("Esporta TagTable Singolarmente", ExportTagTableClick);
menuRoot.Items.AddActionItem<PlcTagTable>("Esporta TagTable selez. su Cartella", ExportTagTableFolderClick);
menuRoot.Items.AddActionItem<PlcTagTable>("Importa TagTable", ImportTagTableClick);
menuRoot.Items.AddActionItem<PlcTagTable>("Importa Cartella", ImportTagTableFolderClick);
}

private void ExportBlockClick(MenuSelectionProvider selectionProvider)
{
foreach (PlcBlock block in selectionProvider.GetSelection())
{
var fileDialog = new OpenFileDialog()
{
Filter = "xml files (*.xml)|*.xml",
CheckFileExists = false,
CheckPathExists = false,
Multiselect = false,
Title = "Export BLOCK " + block.Name,
ShowHelp = true,
FileName = block.Name
};
if (fileDialog.ShowDialog(Util.CreateForm()) == DialogResult.OK)
{
ExportUtil.Export(block.Export, fileDialog.FileName);
}
}
}

private void ExportBlockFolderClick(MenuSelectionProvider selectionProvider)
{
var folderDialog = new FolderBrowserDialog();
if (folderDialog.ShowDialog(Util.CreateForm()) == DialogResult.OK)
{
var directory = folderDialog.SelectedPath;
foreach (PlcBlock block in selectionProvider.GetSelection())
{
ExportUtil.Export(block.Export, directory + "\\" + block.Name + ".xml");
}
}
}


private void ImportBlockClick(MenuSelectionProvider selectionProvider)
{
foreach (PlcBlock block in selectionProvider.GetSelection())
{
var group = (PlcBlockGroup)block.Parent;

var fileDialog = new OpenFileDialog
{
Filter = "xml files (*.xml)|*.xml",
CheckFileExists = true,
CheckPathExists = true,
Multiselect = true
};
if (fileDialog.ShowDialog(Util.CreateForm()) == DialogResult.OK)
{
foreach (var fileName in fileDialog.FileNames)
{
ImportBlock(group, fileName);
}
}

break;
}
plcBlockHandler = new PlcBlockHandler();
plcTagTableHandler = new PlcTagTableHandler();
hmiScreenHandler = new HMIScreenHandler();
hmiPopupHandler = new HMIPopupHandler();
}

private void ImportBlockFolderClick(MenuSelectionProvider selectionProvider)
{
foreach (PlcBlock block in selectionProvider.GetSelection())
{
var group = (PlcBlockGroup)block.Parent;

var folderDialog = new FolderBrowserDialog();
if (folderDialog.ShowDialog(Util.CreateForm()) == DialogResult.OK)
{
foreach (var fileName in Directory.GetFiles(folderDialog.SelectedPath))
{
ImportBlock(group, fileName);
}
}

break;
}
}

private void ImportBlock(PlcBlockGroup group, string fileName)
{
if (fileName.EndsWith(".xml"))
{
try
{
var fileInfo = new FileInfo(fileName);
group.Blocks.Import(fileInfo, ImportOptions.Override,
SWImportOptions.IgnoreMissingReferencedObjects |
SWImportOptions.IgnoreStructuralChanges |
SWImportOptions.IgnoreUnitAttributes);
}
catch(Exception ex)
{
Util.ShowExceptionMessage(ex);
}
}
}

private void ExportTagTableClick(MenuSelectionProvider selectionProvider)
{
foreach (PlcTagTable tagTable in selectionProvider.GetSelection())
{
var fileDialog = new OpenFileDialog
{
Filter = "xml files (*.xml)|*.xml",
CheckFileExists = false,
CheckPathExists = false,
Multiselect = false,
Title = "Export tagtable " + tagTable.Name,
ShowHelp = true,
FileName = tagTable.Name
};
if (fileDialog.ShowDialog(Util.CreateForm()) == DialogResult.OK)
{
ExportUtil.Export(tagTable.Export, fileDialog.FileName);
}
}
}

private void ExportTagTableFolderClick(MenuSelectionProvider selectionProvider)
{
var folderDialog = new FolderBrowserDialog();
if (folderDialog.ShowDialog(Util.CreateForm()) == DialogResult.OK)
{
var directory = folderDialog.SelectedPath;
foreach (PlcTagTable tagTable in selectionProvider.GetSelection())
{
ExportUtil.Export(tagTable.Export, directory + "\\" + tagTable.Name + ".xml");
}
}
}

private void ImportTagTableClick(MenuSelectionProvider selectionProvider)
{
foreach (PlcTagTable tagTable in selectionProvider.GetSelection())
{
var group = (PlcTagTableGroup)tagTable.Parent;

var fileDialog = new OpenFileDialog
{
Filter = "xml files (*.xml)|*.xml",
CheckFileExists = true,
CheckPathExists = true,
Multiselect = true
};
if (fileDialog.ShowDialog(Util.CreateForm()) == DialogResult.OK)
{
foreach (var fileName in fileDialog.FileNames)
{
ImportTagTable(group, fileName);
}
}
}
}

private void ImportTagTableFolderClick(MenuSelectionProvider selectionProvider)
protected override void BuildContextMenuItems(ContextMenuAddInRoot menuRoot)
{
foreach (PlcTagTable tagTable in selectionProvider.GetSelection())
{
var group = (PlcTagTableGroup)tagTable.Parent;
plcBlockHandler.Register(menuRoot);
plcTagTableHandler.Register(menuRoot);
hmiScreenHandler.Register(menuRoot);
hmiPopupHandler.Register(menuRoot);

var folderDialog = new FolderBrowserDialog();
if (folderDialog.ShowDialog(Util.CreateForm()) == DialogResult.OK)
{
foreach (var fileName in Directory.GetFiles(folderDialog.SelectedPath))
{
ImportTagTable(group, fileName);
}
}
/*Siemens.Engineering.Hmi.Screen.Screen hmiScreen;
Siemens.Engineering.Hmi.Screen.ScreenPopup hmiPopup;
Siemens.Engineering.Hmi.Screen.ScreenSlidein hmiSlideIn;
Siemens.Engineering.Hmi.Screen.ScreenPopupComposition d;*/

break;
}
}

private void ImportTagTable(PlcTagTableGroup group, string fileName)
{
if (fileName.EndsWith(".xml"))
{
try
{
var fileInfo = new FileInfo(fileName);
group.TagTables.Import(fileInfo, ImportOptions.Override);
}
catch (Exception ex)
{
Util.ShowExceptionMessage(ex);
}
}
}

}
}
2 changes: 1 addition & 1 deletion TiaAddIn-Spin/AddInProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
using Siemens.Engineering.AddIn;
using Siemens.Engineering.AddIn.Menu;

namespace SpinAddin
namespace SpinAddIn
{
public sealed class AddInProvider : ProjectTreeAddInProvider
{
Expand Down
Loading

0 comments on commit ec264db

Please sign in to comment.