Add Configuration Interface
This commit is contained in:
parent
9846a3c35e
commit
15dd27fb68
@ -3,6 +3,7 @@ using ExcelDna.IntelliSense;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Office.Interop.Excel;
|
||||
using RhSolutions.Services;
|
||||
using System;
|
||||
using System.Net;
|
||||
|
||||
namespace RhSolutions.AddIn
|
||||
@ -11,6 +12,7 @@ namespace RhSolutions.AddIn
|
||||
{
|
||||
public static Application Excel { get; private set; }
|
||||
public static ServiceProvider ServiceProvider { get; set; }
|
||||
public static IAddInConfiguration Configuration { get; set; }
|
||||
|
||||
public void AutoOpen()
|
||||
{
|
||||
@ -18,12 +20,13 @@ namespace RhSolutions.AddIn
|
||||
Excel = (Application)ExcelDnaUtil.Application;
|
||||
|
||||
Services.AddHttpClient()
|
||||
.AddSingleton<IDatabaseClient, RhDatabaseClient>();
|
||||
.AddSingleton<IDatabaseClient, RhDatabaseClient>()
|
||||
.AddSingleton<IAddInConfiguration, AddInConfiguration>();
|
||||
|
||||
ServiceProvider = Services.BuildServiceProvider();
|
||||
|
||||
Configuration = ServiceProvider.GetService<IAddInConfiguration>();
|
||||
|
||||
IntelliSenseServer.Install();
|
||||
RegistryUtil.Initialize();
|
||||
EventsUtil.Initialize();
|
||||
|
||||
ServicePointManager.SecurityProtocol =
|
||||
@ -33,7 +36,6 @@ namespace RhSolutions.AddIn
|
||||
public void AutoClose()
|
||||
{
|
||||
IntelliSenseServer.Uninstall();
|
||||
RegistryUtil.Uninitialize();
|
||||
EventsUtil.Uninitialize();
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using ExcelDna.Integration.CustomUI;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Office.Interop.Excel;
|
||||
using RhSolutions.AddIn;
|
||||
using RhSolutions.Services;
|
||||
@ -51,13 +52,15 @@ namespace RhSolutions.Controllers
|
||||
ribbonUi.InvalidateControl(id);
|
||||
}
|
||||
}
|
||||
|
||||
public void OnSetPricePressed(IRibbonControl control)
|
||||
{
|
||||
string path = Models.Dialog.GetFilePath();
|
||||
|
||||
if (!string.IsNullOrEmpty(path))
|
||||
{
|
||||
RegistryUtil.PriceListPath = path;
|
||||
RhSolutionsAddIn.Configuration.SetPriceListPath(path);
|
||||
RhSolutionsAddIn.Configuration.SaveSettings();
|
||||
}
|
||||
}
|
||||
|
||||
@ -131,7 +134,7 @@ namespace RhSolutions.Controllers
|
||||
|
||||
public string GetPriceListPathLabel(IRibbonControl control)
|
||||
{
|
||||
string name = RegistryUtil.GetPriceListName();
|
||||
string name = RhSolutionsAddIn.Configuration.GetPriceListFileName();
|
||||
return string.IsNullOrEmpty(name) ? "Нет файла шаблона!" : name;
|
||||
}
|
||||
}
|
||||
|
@ -12,22 +12,22 @@ namespace RhSolutions.Controllers
|
||||
internal abstract class ToolBase
|
||||
{
|
||||
protected Application ExcelApp = RhSolutionsAddIn.Excel;
|
||||
protected IAddInConfiguration Configuration = RhSolutionsAddIn.Configuration;
|
||||
protected TargetPriceList TargetFile { get; set; }
|
||||
protected ResultBar ResultBar { get; set; }
|
||||
protected ProgressBar ProgressBar { get; set; }
|
||||
|
||||
public abstract void FillTarget();
|
||||
|
||||
public void OpenNewPrice()
|
||||
{
|
||||
if (ExcelApp.Workbooks
|
||||
.Cast<Workbook>()
|
||||
.FirstOrDefault(w => w.FullName == RegistryUtil.PriceListPath) != null)
|
||||
.FirstOrDefault(w => w.FullName == Configuration.GetPriceListPath()) != null)
|
||||
{
|
||||
throw new ArgumentException("Шаблонный файл редактируется в другом месте");
|
||||
}
|
||||
|
||||
Workbook wb = ExcelApp.Workbooks.Open(RegistryUtil.PriceListPath, null, true);
|
||||
Workbook wb = ExcelApp.Workbooks.Open(Configuration.GetPriceListPath(), null, true);
|
||||
|
||||
try
|
||||
{
|
||||
|
39
RhSolutions.AddIn/Services/AddInConfiguration.cs
Normal file
39
RhSolutions.AddIn/Services/AddInConfiguration.cs
Normal file
@ -0,0 +1,39 @@
|
||||
using System;
|
||||
using System.Configuration;
|
||||
using System.IO;
|
||||
|
||||
namespace RhSolutions.Services
|
||||
{
|
||||
public class AddInConfiguration : ApplicationSettingsBase, IAddInConfiguration
|
||||
{
|
||||
[UserScopedSetting]
|
||||
public string PriceListPath
|
||||
{
|
||||
get
|
||||
{
|
||||
return (string)this["PriceListPath"];
|
||||
}
|
||||
set
|
||||
{
|
||||
this["PriceListPath"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
public event SettingChangingEventHandler OnSettingsChange
|
||||
{
|
||||
add
|
||||
{
|
||||
base.SettingChanging += value;
|
||||
}
|
||||
remove
|
||||
{
|
||||
base.SettingChanging -= value;
|
||||
}
|
||||
}
|
||||
|
||||
public string GetPriceListFileName() => Path.GetFileName(PriceListPath);
|
||||
public string GetPriceListPath() => PriceListPath;
|
||||
public void SetPriceListPath(string value) => PriceListPath = value;
|
||||
public void SaveSettings() => base.Save();
|
||||
}
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
using Microsoft.Office.Interop.Excel;
|
||||
using RhSolutions.AddIn;
|
||||
using RhSolutions.Controllers;
|
||||
using System.Configuration;
|
||||
|
||||
namespace RhSolutions.Services
|
||||
{
|
||||
@ -13,6 +14,7 @@ namespace RhSolutions.Services
|
||||
Excel.SheetSelectionChange += RefreshExportButton;
|
||||
Excel.SheetActivate += RefreshConvertButton;
|
||||
Excel.WorkbookActivate += RefreshConvertButton;
|
||||
RhSolutionsAddIn.Configuration.OnSettingsChange += RefreshSettingTitle;
|
||||
}
|
||||
|
||||
public static void Uninitialize()
|
||||
@ -20,6 +22,7 @@ namespace RhSolutions.Services
|
||||
Excel.SheetSelectionChange -= RefreshExportButton;
|
||||
Excel.SheetActivate -= RefreshConvertButton;
|
||||
Excel.WorkbookActivate -= RefreshConvertButton;
|
||||
RhSolutionsAddIn.Configuration.OnSettingsChange -= RefreshSettingTitle;
|
||||
}
|
||||
|
||||
private static void RefreshConvertButton(object sh)
|
||||
@ -31,5 +34,10 @@ namespace RhSolutions.Services
|
||||
{
|
||||
RibbonController.RefreshControl("export");
|
||||
}
|
||||
|
||||
private static void RefreshSettingTitle(object sender, SettingChangingEventArgs e)
|
||||
{
|
||||
RibbonController.RefreshControl("setPriceList");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
13
RhSolutions.AddIn/Services/IAddInConfiguration.cs
Normal file
13
RhSolutions.AddIn/Services/IAddInConfiguration.cs
Normal file
@ -0,0 +1,13 @@
|
||||
using System.Configuration;
|
||||
|
||||
namespace RhSolutions.Services
|
||||
{
|
||||
public interface IAddInConfiguration
|
||||
{
|
||||
public string GetPriceListPath();
|
||||
public string GetPriceListFileName();
|
||||
public event SettingChangingEventHandler OnSettingsChange;
|
||||
public void SetPriceListPath(string value);
|
||||
public void SaveSettings();
|
||||
}
|
||||
}
|
@ -1,74 +0,0 @@
|
||||
using Microsoft.Win32;
|
||||
using RhSolutions.Controllers;
|
||||
using RhSolutions.Models;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace RhSolutions.Services
|
||||
{
|
||||
static class RegistryUtil
|
||||
{
|
||||
private static string priceListPath;
|
||||
private static RegistryKey RootKey { get; set; }
|
||||
|
||||
public static void Initialize()
|
||||
{
|
||||
RootKey = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\REHAU\SkuAssist");
|
||||
priceListPath = RootKey.GetValue("PriceListPath") as string;
|
||||
}
|
||||
|
||||
public static void Uninitialize()
|
||||
{
|
||||
RootKey.Close();
|
||||
}
|
||||
|
||||
public static string PriceListPath
|
||||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(priceListPath) || !File.Exists(priceListPath))
|
||||
{
|
||||
DialogResult result = MessageBox.Show("Прайс-лист отсутствует или неверный файл шаблона прайс-листа. " +
|
||||
"Укажите файл шаблона прайс-листа.",
|
||||
"Нет файла шаблона",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
|
||||
if (result == DialogResult.OK)
|
||||
{
|
||||
string fileName = Dialog.GetFilePath();
|
||||
|
||||
if (string.IsNullOrEmpty(fileName))
|
||||
{
|
||||
throw new Exception("Нет файла шаблона");
|
||||
}
|
||||
|
||||
priceListPath = fileName;
|
||||
RootKey.SetValue("PriceListPath", fileName);
|
||||
return priceListPath;
|
||||
}
|
||||
|
||||
else
|
||||
throw new Exception("Нет файла шаблона");
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
return priceListPath;
|
||||
}
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
priceListPath = value;
|
||||
RootKey.SetValue("PriceListPath", value);
|
||||
RibbonController.RefreshControl("setPriceList");
|
||||
}
|
||||
}
|
||||
|
||||
public static string GetPriceListName()
|
||||
{
|
||||
return Path.GetFileName(priceListPath);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user