aboutsummaryrefslogtreecommitdiff
path: root/src/Controllers/RibbonController.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Controllers/RibbonController.cs')
-rw-r--r--src/Controllers/RibbonController.cs137
1 files changed, 137 insertions, 0 deletions
diff --git a/src/Controllers/RibbonController.cs b/src/Controllers/RibbonController.cs
new file mode 100644
index 0000000..87c62e1
--- /dev/null
+++ b/src/Controllers/RibbonController.cs
@@ -0,0 +1,137 @@
+using ExcelDna.Integration.CustomUI;
+using Microsoft.Office.Interop.Excel;
+using RhSolutions.Services;
+using System;
+using System.IO;
+using System.Reflection;
+using System.Runtime.InteropServices;
+using System.Windows.Forms;
+
+namespace RhSolutions.Controllers
+{
+ [ComVisible(true)]
+ public class RibbonController : ExcelRibbon
+ {
+ private static IRibbonUI ribbonUi;
+
+ public override string GetCustomUI(string RibbonID)
+ {
+ return @"
+ <customUI onLoad='RibbonLoad' xmlns='http://schemas.microsoft.com/office/2006/01/customui'>
+ <ribbon>
+ <tabs>
+ <tab id='rau' label='RhSolutions'>
+ <group id='priceList' label='Прайс-лист'>
+ <button id='export' getEnabled='GetExportEnabled' label='Экспорт в новый файл' size='normal' imageMso='PivotExportToExcel' onAction='OnToolPressed'/>
+ <button id='convert' getEnabled='GetConvertEnabled' label='Актуализировать' size='normal' imageMso='FileUpdate' onAction='OnToolPressed'/>
+ <menu id='conjoinMenu' label='Объединить' imageMso='Copy'>
+ <button id='merge' label='Сложить' onAction='OnToolPressed'/>
+ <button id='combine' label='По колонкам' onAction='OnToolPressed'/>
+ </menu>
+ </group>
+ <group id='rausettings' getLabel='GetVersionLabel'>
+ <button id='setPriceList' getLabel='GetPriceListPathLabel' size='large' imageMso='TableExcelSpreadsheetInsert' onAction='OnSetPricePressed'/>
+ </group>
+ </tab>
+ </tabs>
+ </ribbon>
+ </customUI>";
+ }
+
+ public void RibbonLoad(IRibbonUI sender)
+ {
+ ribbonUi = sender;
+ }
+
+ public static void RefreshControl(string id)
+ {
+ if (ribbonUi != null)
+ {
+ ribbonUi.InvalidateControl(id);
+ }
+ }
+ public void OnSetPricePressed(IRibbonControl control)
+ {
+ string path = Models.Dialog.GetFilePath();
+
+ if (!string.IsNullOrEmpty(path))
+ {
+ RegistryUtil.PriceListPath = path;
+ }
+ }
+
+ public void OnToolPressed(IRibbonControl control)
+ {
+ try
+ {
+ ToolBase tool;
+ switch (control.Id)
+ {
+ case "export":
+ tool = new ExportTool();
+ break;
+ case "convert":
+ tool = new ConvertTool();
+ break;
+ case "merge":
+ tool = new MergeTool();
+ break;
+ case "combine":
+ tool = new CombineTool();
+ break;
+ default:
+ throw new Exception("Неизвестный инструмент");
+ }
+
+ tool.OpenNewPrice();
+ tool.FillTarget();
+ }
+
+ catch (Exception exception)
+ {
+ MessageBox.Show(exception.Message,
+ "Ошибка",
+ MessageBoxButtons.OK,
+ MessageBoxIcon.Information);
+ RhSolutionsAddIn.Excel.StatusBar = false;
+ return;
+ }
+ }
+
+ public bool GetConvertEnabled(IRibbonControl control)
+ {
+ if (RhSolutionsAddIn.Excel.ActiveWorkbook == null)
+ return false;
+
+ else
+ {
+ Worksheet worksheet = RhSolutionsAddIn.Excel.ActiveWorkbook.ActiveSheet;
+ return worksheet.IsRehauSource();
+ }
+ }
+
+ public bool GetExportEnabled(IRibbonControl control)
+ {
+ if (RhSolutionsAddIn.Excel.ActiveWorkbook == null)
+ return false;
+
+ else
+ {
+ Range selection = RhSolutionsAddIn.Excel.Selection;
+ return selection.Columns.Count == 2;
+ }
+ }
+
+ public string GetVersionLabel(IRibbonControl control)
+ {
+ string version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
+ return $"v{version}";
+ }
+
+ public string GetPriceListPathLabel(IRibbonControl control)
+ {
+ string name = RegistryUtil.GetPriceListName();
+ return string.IsNullOrEmpty(name) ? "Нет файла шаблона!" : name;
+ }
+ }
+}