Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 97 additions & 1 deletion BHoMUpgrades/CustomUpgrades/v100.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@

using BH.oM.Versioning;
using System.Collections.Generic;
using System;

namespace BH.Upgraders
{
Expand All @@ -33,6 +32,103 @@ public static class v100
/**** Public Methods ****/
/***************************************************/

[VersioningTarget("BH.Revit.oM.UI.UIManagementSettings")]
public static Dictionary<string, object> UpgradeUIManagementSettings(Dictionary<string, object> oldVersion)
{
if (oldVersion == null)
return null;

Dictionary<string, object> newVersion = new Dictionary<string, object>();
newVersion["_t"] = "BH.Revit.oM.UI.ButtonLayoutSettings";

if (oldVersion.ContainsKey("Name"))
newVersion["Name"] = oldVersion["Name"];

if (oldVersion.ContainsKey("BHoM_Guid"))
newVersion["BHoM_Guid"] = oldVersion["BHoM_Guid"];

if (oldVersion.ContainsKey("CustomData"))
newVersion["CustomData"] = oldVersion["CustomData"];

if (oldVersion.ContainsKey("Fragments"))
newVersion["Fragments"] = oldVersion["Fragments"];

Dictionary<string, object> buttonLayout = new Dictionary<string, object>();
buttonLayout["_t"] = "BH.Revit.oM.UI.ButtonLayout";
buttonLayout["Tabs"] = new List<Dictionary<string, object>>();

if (oldVersion.ContainsKey("PinnedItems"))
{
object[] pinnedItems = oldVersion["PinnedItems"] as object[];
if (pinnedItems != null)
{
Dictionary<string, Dictionary<string, List<Dictionary<string, object>>>> tabPanelMapping = new Dictionary<string, Dictionary<string, List<Dictionary<string, object>>>>();
foreach (object obj in pinnedItems)
{
Dictionary<string, object> item = obj as Dictionary<string, object>;
if (item == null)
continue;

if (!item.ContainsKey("_t"))
continue;

if (item["_t"] as string != "BH.Revit.oM.UI.PinnedItemInfo")
continue;

if (!item.ContainsKey("PanelName") || !item.ContainsKey("TabName"))
continue;

string tabName = item["TabName"] as string;
string panelName = item["PanelName"] as string;

if (string.IsNullOrWhiteSpace(tabName) || string.IsNullOrWhiteSpace(panelName))
continue;

if (!tabPanelMapping.ContainsKey(tabName))
tabPanelMapping[tabName] = new Dictionary<string, List<Dictionary<string, object>>>();

if (!tabPanelMapping[tabName].ContainsKey(panelName))
tabPanelMapping[tabName][panelName] = new List<Dictionary<string, object>>();

Dictionary<string, object> newItem = new Dictionary<string, object>(item);
newItem["_t"] = "BH.Revit.oM.UI.PinnedButton";

if (newItem.ContainsKey("BHoM_Guid"))
newItem.Remove("BHoM_Guid");

if (newItem.ContainsKey("CustomData"))
newItem.Remove("CustomData");

if (newItem.ContainsKey("Fragments"))
newItem.Remove("Fragments");

tabPanelMapping[tabName][panelName].Add(newItem);
}

foreach (KeyValuePair<string, Dictionary<string, List<Dictionary<string, object>>>> tab in tabPanelMapping)
{
Dictionary<string, object> tabDict = new Dictionary<string, object>();
tabDict["_t"] = "BH.Revit.oM.UI.TabLayout";
tabDict["Name"] = tab.Key;
tabDict["Panels"] = new List<Dictionary<string, object>>();
foreach (KeyValuePair<string, List<Dictionary<string, object>>> panel in tab.Value)
{
Dictionary<string, object> panelDict = new Dictionary<string, object>();
panelDict["_t"] = "BH.Revit.oM.UI.Panel";
panelDict["Name"] = panel.Key;
panelDict["Items"] = panel.Value;
(tabDict["Panels"] as List<Dictionary<string, object>>).Add(panelDict);
}
(buttonLayout["Tabs"] as List<Dictionary<string, object>>).Add(tabDict);
}
}
}

newVersion["Layout"] = buttonLayout;

return newVersion;
}

/***************************************************/
}
}
Loading