diff --git a/CHANGELOG.md b/CHANGELOG.md
index a4d2607..60e014f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
+## [0.5.7] / 2023-11-17
+### Features
+- LargeImage changes `TextBox` Image
+- Create `RowLargeStackedItems` with large image and two itens
+### Updated
+- Update Example `Icons` to get random icon using `UIFrameworkRes`
+### Tests
+- Test `ComboBox` and `TextBox` Image/LargeImage
+- Test `RowLargeStackedItems` with large image and two itens
+
## [0.5.6] / 2023-11-08
### Features
- Update Remove and QuickAccess
@@ -291,6 +301,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- First Release
[vNext]: ../../compare/1.0.0...HEAD
+[0.5.7]: ../../compare/0.5.6...0.5.7
[0.5.6]: ../../compare/0.5.5...0.5.6
[0.5.5]: ../../compare/0.5.4...0.5.5
[0.5.4]: ../../compare/0.5.3...0.5.4
diff --git a/README.md b/README.md
index b16ad6a..c4f8ebf 100644
--- a/README.md
+++ b/README.md
@@ -379,8 +379,6 @@ awRibbonPanel.SetDialogLauncher(ribbonCommandItem);
This Project is [licensed](LICENSE) under the [MIT Licence](https://en.wikipedia.org/wiki/MIT_License).
-Credit to [icons8.com](https://icons8.com/) for the icons on the Example.
-
---
Do you like this package? Please [star this project on GitHub](../../stargazers)!
\ No newline at end of file
diff --git a/ricaun.Revit.UI.Example/Models/TestModel.cs b/ricaun.Revit.UI.Example/Models/TestModel.cs
index b810185..6a2f507 100644
--- a/ricaun.Revit.UI.Example/Models/TestModel.cs
+++ b/ricaun.Revit.UI.Example/Models/TestModel.cs
@@ -7,7 +7,7 @@ public class TestModel : NotifyPropertyBase
{
public string Text { get; set; } = "Test";
public string Title { get; set; } = "Title";
- public object Icon { get; set; } = Proprieties.Icons8.Circled;
+ public object Icon { get; set; } = Proprieties.Pack.Revit;
public ICommand CommandTest { get; set; }
public ICommand CommandTest2 { get; set; }
}
diff --git a/ricaun.Revit.UI.Example/Proprieties/Icons.cs b/ricaun.Revit.UI.Example/Proprieties/Icons.cs
new file mode 100644
index 0000000..3849ed4
--- /dev/null
+++ b/ricaun.Revit.UI.Example/Proprieties/Icons.cs
@@ -0,0 +1,52 @@
+using ricaun.Revit.UI;
+using System;
+using System.Collections;
+using System.Linq;
+using System.Reflection;
+using System.Windows.Media.Imaging;
+
+namespace ricaun.Revit.UI.Example.Proprieties
+{
+ public static class Icons
+ {
+ ///
+ /// Get Icon
+ ///
+ public static BitmapSource Icon => GetIcon().GetBitmapSource();
+ public static string[] IconResources { get; } = GetIcons();
+ private static int IndexResource = 0;
+ private static string GetIcon()
+ {
+ var icon = IconResources[IndexResource];
+ IndexResource = (IndexResource + 1) % IconResources.Length;
+ return icon;
+ }
+ private static string AssemblyName => "UIFrameworkRes";
+ private static string[] GetIcons()
+ {
+ var assembly = AppDomain.CurrentDomain.GetAssemblies()
+ .FirstOrDefault(e => e.GetName().Name.Equals(AssemblyName, StringComparison.InvariantCultureIgnoreCase));
+
+ return GetResourceNames(assembly)
+ .Where(e => e.Contains("ribbon"))
+ .Where(e => e.EndsWith(".ico"))
+ .Select(e => $"/{AssemblyName};component/{e}")
+ .ToArray();
+ }
+ ///
+ /// GetResourceNames
+ ///
+ ///
+ ///
+ private static string[] GetResourceNames(Assembly assembly)
+ {
+ string resName = assembly.GetName().Name + ".g.resources";
+ using (var stream = assembly.GetManifestResourceStream(resName))
+ using (var reader = new System.Resources.ResourceReader(stream))
+ {
+ var resources = reader.Cast().Select(entry => (string)entry.Key).OrderBy(e => e).ToArray();
+ return resources;
+ }
+ }
+ }
+}
diff --git a/ricaun.Revit.UI.Example/Proprieties/Icons8.cs b/ricaun.Revit.UI.Example/Proprieties/Icons8.cs
deleted file mode 100644
index 18c91d0..0000000
--- a/ricaun.Revit.UI.Example/Proprieties/Icons8.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-using System;
-using System.Runtime.CompilerServices;
-using System.Windows.Media.Imaging;
-using ricaun.Revit.UI;
-
-namespace ricaun.Revit.UI.Example.Proprieties
-{
- ///
- /// https://icons8.com/
- /// https://img.icons8.com/small/32/000000/circled.png
- /// https://img.icons8.com/{0}/{1}/{2}/{3}.png
- ///
- public class Icons8
- {
- #region Private
- private static string Color => "000000";
- private static string Type => "color";
- private static string Size => "32";
- private static string BaseUri => @"https://img.icons8.com/{0}/{1}/{2}/{3}.png";
- #endregion
-
- #region Icons
- public static BitmapSource Icon([CallerMemberName] string name = null) => string.Format(BaseUri, Type, Size, Color, name.ToLower()).GetBitmapSource();
- public static BitmapSource Ok => Icon();
- public static BitmapSource Document => Icon();
- public static BitmapSource File => Icon();
- public static BitmapSource Support => Icon();
- public static BitmapSource Settings => Icon();
- public static BitmapSource About => Icon();
- public static BitmapSource Restart => Icon();
- public static BitmapSource Filter => Icon();
- public static BitmapSource Search => Icon();
- public static BitmapSource Trash => Icon();
- public static BitmapSource Home => Icon();
- public static BitmapSource Menu => Icon();
- public static BitmapSource Info => Icon();
- public static BitmapSource Circled => Icon();
- public static BitmapSource Checked => Icon();
- public static BitmapSource Cancel => Icon();
- #endregion
- }
-}
diff --git a/ricaun.Revit.UI.Example/Proprieties/Pack.cs b/ricaun.Revit.UI.Example/Proprieties/Pack.cs
index 28f76b4..e76e6bb 100644
--- a/ricaun.Revit.UI.Example/Proprieties/Pack.cs
+++ b/ricaun.Revit.UI.Example/Proprieties/Pack.cs
@@ -10,6 +10,7 @@ public static class Pack
private static string BaseUri => @"pack://application:,,,/{0};component/Ribbon/images/{1}.ico";
#endregion
public static string Icon([CallerMemberName] string name = null) => string.Format(BaseUri, Assembly, name.ToLower());
+ public static string Revit => Icon();
public static string Power => Icon("system_electrical_circuit_power_create");
public static string Communication => Icon("system_electrical_circuit_communication_create");
public static string Control => Icon("system_electrical_circuit_control_create");
@@ -19,6 +20,5 @@ public static class Pack
public static string Security => Icon("system_electrical_circuit_security_create");
public static string Telephone => Icon("system_electrical_circuit_telephone_create");
public static string Switch => Icon("system_switch_create");
-
}
}
diff --git a/ricaun.Revit.UI.Example/Revit/App.cs b/ricaun.Revit.UI.Example/Revit/App.cs
index 0894aa5..614ba40 100644
--- a/ricaun.Revit.UI.Example/Revit/App.cs
+++ b/ricaun.Revit.UI.Example/Revit/App.cs
@@ -25,7 +25,7 @@ public Result OnStartup(UIControlledApplication application)
ribbonPanel = application.CreatePanel(TabName, PanelName);
ribbonPanel.CreatePushButton("Revit")
- .SetLargeImage("/UIFrameworkRes;component/ribbon/images/revit.ico");
+ .SetLargeImage(Pack.Revit);
var button = ribbonPanel.CreatePushButton();
@@ -99,17 +99,17 @@ public Result OnStartup(UIControlledApplication application)
.SetText("1")
.SetToolTip("One")
.SetLongDescription("The One")
- .SetLargeImage(Icons8.Document.Scale(0.5))
- .SetToolTipImage(Icons8.Document),
+ .SetLargeImage(Icons.Icon.Scale(0.5))
+ .SetToolTipImage(Icons.Icon),
ribbonPanel.NewPushButtonData>()
.SetText("2")
- .SetLargeImage(Icons8.Document.Scale(0.5)),
+ .SetLargeImage(Icons.Icon.Scale(0.5)),
ribbonPanel.NewPushButtonData>()
.SetText("3")
- .SetLargeImage(Icons8.Document.Scale(0.5)),
+ .SetLargeImage(Icons.Icon.Scale(0.5)),
ribbonPanel.NewPushButtonData>()
.SetText("4")
- .SetLargeImage(Icons8.Document.Scale(0.5))
+ .SetLargeImage(Icons.Icon.Scale(0.5))
)
.SetToolTip("T");
@@ -123,7 +123,7 @@ public Result OnStartup(UIControlledApplication application)
.SetShowImageAsButton()
.SetPromptText("Search")
.SetValue("Search")
- .SetImage(Icons8.Search);
+ .SetImage(Icons.Icon);
textBox.EnterPressed += (s, e) =>
{
@@ -132,9 +132,9 @@ public Result OnStartup(UIControlledApplication application)
ribbonPanel.AddStackedItems(
ribbonPanel.NewTextBoxData("T1")
- .SetImage(Icons8.Search),
+ .SetImage(Icons.Icon),
ribbonPanel.NewTextBoxData("T2")
- .SetImage(Icons8.Search)
+ .SetImage(Icons.Icon)
);
#endregion
@@ -142,19 +142,19 @@ public Result OnStartup(UIControlledApplication application)
#region CreateRadioButtonGroup
var radio = ribbonPanel.CreateRadioButtonGroup("Radio",
ribbonPanel.NewToggleButtonData("R1")
- .SetLargeImage(Icons8.Circled),
+ .SetLargeImage(Icons.Icon),
ribbonPanel.NewToggleButtonData("R2")
- .SetLargeImage(Icons8.Checked),
+ .SetLargeImage(Icons.Icon),
ribbonPanel.NewToggleButtonData("R3")
- .SetLargeImage(Icons8.Cancel),
+ .SetLargeImage(Icons.Icon),
ribbonPanel.NewToggleButtonData>()
.SetText("R4")
- .SetLargeImage(Icons8.Trash)
+ .SetLargeImage(Icons.Icon)
);
radio.AddToggleButtons(
ribbonPanel.NewToggleButtonData("R5")
- .SetLargeImage(Icons8.About)
+ .SetLargeImage(Icons.Icon)
);
#endregion
@@ -162,11 +162,11 @@ public Result OnStartup(UIControlledApplication application)
var comboBox = ribbonPanel.CreateComboBox("ComboBox",
ribbonPanel.NewComboBoxMemberData("C1")
- .SetImage(Icons8.Restart),
+ .SetImage(Icons.Icon),
ribbonPanel.NewComboBoxMemberData("C2")
- .SetImage(Icons8.Restart),
+ .SetImage(Icons.Icon),
ribbonPanel.NewComboBoxMemberData("C3")
- .SetImage(Icons8.Restart)
+ .SetImage(Icons.Icon)
);
comboBox.CurrentChanged += (s, e) =>
@@ -258,10 +258,10 @@ private void AddNewPanelToMove(UIControlledApplication application)
{
ribbonPanelMove = application.CreateOrSelectPanel(TabName, PanelName + "0");
var button = ribbonPanelMove.CreatePushButton("Teste")
- .SetLargeImage("/UIFrameworkRes;component/ribbon/images/revit.ico");
+ .SetLargeImage(Icons.Icon);
var splitButtonWithButton = ribbonPanelMove.CreateSplitButton(
- ribbonPanelMove.NewPushButtonData("Split"),
+ ribbonPanelMove.NewPushButtonData("Split").SetLargeImage(Icons.Icon),
ribbonPanelMove.NewPushButtonData("Split"),
ribbonPanelMove.NewPushButtonData("Split"),
ribbonPanelMove.NewPushButtonData(),
@@ -272,10 +272,10 @@ private void AddNewPanelToMove(UIControlledApplication application)
for (int i = 0; i < 5; i++)
{
- split.CreatePushButton()
- .SetLargeImage("/UIFrameworkRes;component/ribbon/images/revit.ico");
+ splitButton.CreatePushButton()
+ .SetLargeImage(Icons.Icon);
split.CreatePushButton()
- .SetLargeImage("/UIFrameworkRes;component/ribbon/images/revit.ico");
+ .SetLargeImage(Icons.Icon);
}
//Console.WriteLine($">> {split}");
@@ -369,7 +369,7 @@ private void UpdateRibbonDescription(RibbonPanel ribbonPanel)
{
Text = "Ok",
ToolTip = "This Button gonna be Removed",
- LargeImage = Icons8.Ok,
+ LargeImage = Icons.Icon,
Action = (ribbonItem) =>
{
var ri = ribbonItem.GetRibbonItem() as Autodesk.Windows.RibbonButton;
@@ -382,7 +382,7 @@ private void UpdateRibbonDescription(RibbonPanel ribbonPanel)
new RibbonDescription()
{
Text = "int",
- LargeImage = Icons8.Document
+ LargeImage = Icons.Icon
}
);
@@ -390,7 +390,7 @@ private void UpdateRibbonDescription(RibbonPanel ribbonPanel)
new RibbonDescription()
{
Text = "double",
- LargeImage = Icons8.File
+ LargeImage = Icons.Icon
}
);
@@ -398,7 +398,7 @@ private void UpdateRibbonDescription(RibbonPanel ribbonPanel)
new RibbonDescription()
{
Text = "bool",
- LargeImage = Icons8.Support
+ LargeImage = Icons.Icon
}
);
@@ -406,21 +406,21 @@ private void UpdateRibbonDescription(RibbonPanel ribbonPanel)
new RibbonDescription()
{
Text = "text",
- LargeImage = Icons8.Settings
+ LargeImage = Icons.Icon
}
);
setting.Add("PulldownButton", new RibbonDescription()
{
Text = "Menu",
- LargeImage = Icons8.About
+ LargeImage = Icons.Icon
});
setting.Add>(new RibbonDescription()
{
Text = "UIApplication",
- LargeImage = Icons8.Restart,
+ LargeImage = Icons.Icon,
Action = (ribbonItem) =>
{
ribbonItem.SetItemSize();
@@ -431,7 +431,7 @@ private void UpdateRibbonDescription(RibbonPanel ribbonPanel)
setting.Add>(new RibbonDescription()
{
Text = "UIDocument",
- LargeImage = Icons8.Filter,
+ LargeImage = Icons.Icon,
Action = (ribbonItem) =>
{
ribbonItem.SetItemSize();
@@ -442,7 +442,7 @@ private void UpdateRibbonDescription(RibbonPanel ribbonPanel)
setting.Add>(new RibbonDescription()
{
Text = "Application",
- LargeImage = Icons8.Search,
+ LargeImage = Icons.Icon,
Action = (ribbonItem) =>
{
ribbonItem.SetItemSize();
@@ -453,7 +453,7 @@ private void UpdateRibbonDescription(RibbonPanel ribbonPanel)
setting.Add>(new RibbonDescription()
{
Text = "Document",
- LargeImage = Icons8.Trash,
+ LargeImage = Icons.Icon,
Action = (ribbonItem) =>
{
ribbonItem.SetItemSize();
@@ -464,7 +464,7 @@ private void UpdateRibbonDescription(RibbonPanel ribbonPanel)
setting.Add>(new RibbonDescription()
{
Text = "RibbonItem",
- LargeImage = Icons8.Home,
+ LargeImage = Icons.Icon,
Action = (ribbonItem) =>
{
ribbonItem.GetRibbonItem().AddQuickAccessToolBar();
@@ -475,7 +475,7 @@ private void UpdateRibbonDescription(RibbonPanel ribbonPanel)
setting.Add>(new RibbonDescription()
{
Text = "RibbonButton",
- LargeImage = Icons8.Menu,
+ LargeImage = Icons.Icon,
Action = (ribbonItem) =>
{
ribbonItem.GetRibbonItem().AddQuickAccessToolBar();
@@ -486,7 +486,7 @@ private void UpdateRibbonDescription(RibbonPanel ribbonPanel)
setting.Add>(new RibbonDescription()
{
Text = "RibbonPanel",
- LargeImage = Icons8.Info,
+ LargeImage = Icons.Icon,
Action = (ribbonItem) =>
{
ribbonItem.GetRibbonItem().AddQuickAccessToolBar();
@@ -497,7 +497,7 @@ private void UpdateRibbonDescription(RibbonPanel ribbonPanel)
setting.Add>(new RibbonDescription()
{
Text = "Element",
- LargeImage = Icons8.Circled,
+ LargeImage = Icons.Icon,
Action = (ribbonItem) =>
{
ribbonItem.SetShowText();
@@ -507,7 +507,7 @@ private void UpdateRibbonDescription(RibbonPanel ribbonPanel)
setting.Add>(new RibbonDescription()
{
Text = "ElementType",
- LargeImage = Icons8.Checked,
+ LargeImage = Icons.Icon,
Action = (ribbonItem) =>
{
ribbonItem.SetShowText();
@@ -517,7 +517,7 @@ private void UpdateRibbonDescription(RibbonPanel ribbonPanel)
setting.Add>(new RibbonDescription()
{
Text = "ElementArray",
- LargeImage = Icons8.Cancel,
+ LargeImage = Icons.Icon,
Action = (ribbonItem) =>
{
ribbonItem.SetShowText();
@@ -553,16 +553,16 @@ private void UpdateRibbonDescription(RibbonPanel ribbonPanel)
combo.AddComboBoxMembers(
ribbonPanel.NewComboBoxMemberData("1")
.SetText("One")
- .SetImage(Icons8.Document)
+ .SetImage(Icons.Icon)
.SetToolTip("One")
- .SetToolTipImage(Icons8.Document)
+ .SetToolTipImage(Icons.Icon)
.SetLongDescription("One"),
ribbonPanel.NewComboBoxMemberData("2")
.SetGroupName("G1")
- .SetImage(Icons8.Document),
+ .SetImage(Icons.Icon),
ribbonPanel.NewComboBoxMemberData("3")
.SetGroupName("G2")
- .SetImage(Icons8.Document)
+ .SetImage(Icons.Icon)
);
}
}
diff --git a/ricaun.Revit.UI.Example/Revit/AppStacked.cs b/ricaun.Revit.UI.Example/Revit/AppStacked.cs
index e2e642c..fb00b36 100644
--- a/ricaun.Revit.UI.Example/Revit/AppStacked.cs
+++ b/ricaun.Revit.UI.Example/Revit/AppStacked.cs
@@ -1,6 +1,8 @@
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using ricaun.Revit.UI;
+using ricaun.Revit.UI.Example.Proprieties;
+using ricaun.Revit.UI.Utils;
using System.Linq;
namespace ricaun.Revit.UI.Example.Revit
@@ -28,7 +30,8 @@ RibbonItem[] CreateButtons(int number)
.SetToolTip($"{i}")
.SetShowText(false)
.SetItemSize()
- .SetLargeImage("/UIFrameworkRes;component/ribbon/images/revit.ico")
+ .SetToolTip(Icons.Icon.ToString())
+ .SetLargeImage(Icons.Icon)
);
return itens.ToArray();
}
@@ -36,6 +39,9 @@ RibbonItem[] CreateButtons(int number)
ribbonPanel.AddSeparator();
ribbonPanel.RowStackedItems(CreateButtons(9));
+ ribbonPanel.AddSeparator();
+ ribbonPanel.RowLargeStackedItems(CreateButtons(4));
+
ribbonPanel.AddSlideOut();
ribbonPanel.RowStackedItems(CreateButtons(8));
ribbonPanel.AddSeparator();
@@ -55,7 +61,7 @@ RibbonItem[] CreateButtons(int number)
ribbonPanel.AddSeparator();
ribbonPanel.RowStackedItems(
- ribbonPanel.CreatePushButton(),
+ ribbonPanel.CreatePushButton("StackedItems"),
ribbonPanel.CreateTextBox().AddEnterPressed(AppStacked_EnterPressed).SetShowImageAsButton().SetWidth(100),
ribbonPanel.CreateTextBox().AddEnterPressed(AppStacked_EnterPressedNull).SetShowImageAsButton().SetWidth(100)
);
diff --git a/ricaun.Revit.UI.Example/ricaun.Revit.UI.Example.csproj b/ricaun.Revit.UI.Example/ricaun.Revit.UI.Example.csproj
index 61b9a8d..ed2cd43 100644
--- a/ricaun.Revit.UI.Example/ricaun.Revit.UI.Example.csproj
+++ b/ricaun.Revit.UI.Example/ricaun.Revit.UI.Example.csproj
@@ -76,7 +76,7 @@
ricaun.Revit.UI.Example
- 0.5.6
+ 0.5.7
{f736f68f-7101-4640-9093-8715f88ccb95}
diff --git a/ricaun.Revit.UI.Tests/Base/BaseImage.cs b/ricaun.Revit.UI.Tests/Base/BaseImage.cs
new file mode 100644
index 0000000..80ce54d
--- /dev/null
+++ b/ricaun.Revit.UI.Tests/Base/BaseImage.cs
@@ -0,0 +1,7 @@
+namespace ricaun.Revit.UI.Tests
+{
+ public class BaseImage
+ {
+ public const string Revit = "/UIFrameworkRes;component/ribbon/images/revit.ico";
+ }
+}
\ No newline at end of file
diff --git a/ricaun.Revit.UI.Tests/Items/Extensions/RevitCreateItemsImageTests.cs b/ricaun.Revit.UI.Tests/Items/Extensions/RevitCreateItemsImageTests.cs
index 8ea60c1..d686db5 100644
--- a/ricaun.Revit.UI.Tests/Items/Extensions/RevitCreateItemsImageTests.cs
+++ b/ricaun.Revit.UI.Tests/Items/Extensions/RevitCreateItemsImageTests.cs
@@ -3,87 +3,6 @@
namespace ricaun.Revit.UI.Tests.Items.Extensions
{
- public class RevitImageSourceTests : BaseCreatePanelTests
- {
- System.Windows.Media.ImageSource imageSource = null;
- const string ComponentImage = "/UIFrameworkRes;component/ribbon/images/revit.ico";
-
- #region RibbonItem
-
- [Test]
- public void PushButton_SetImage_Should_BeRemoved()
- {
- var ribbonItem = ribbonPanel.CreatePushButton();
- ribbonItem.SetImage(ComponentImage);
- Assert.IsNotNull(ribbonItem.Image);
- ribbonItem.SetImage(imageSource);
- Assert.IsNull(ribbonItem.Image);
- }
-
- [Test]
- public void ComboBox_SetImage_Should_BeRemoved()
- {
- var ribbonItem = ribbonPanel.CreateComboBox();
- ribbonItem.SetImage(ComponentImage);
- Assert.IsNotNull(ribbonItem.Image);
- ribbonItem.SetImage(imageSource);
- Assert.IsNull(ribbonItem.Image);
- }
-
- [Test]
- public void TextBox_SetImage_Should_BeRemoved()
- {
- var ribbonItem = ribbonPanel.CreateTextBox();
- ribbonItem.SetImage(ComponentImage);
- Assert.IsNotNull(ribbonItem.Image);
- ribbonItem.SetImage(imageSource);
- Assert.IsNull(ribbonItem.Image);
- }
- #endregion
-
- #region RibbonItemData
- [Test]
- public void PushButtonData_SetImage_Should_BeRemoved()
- {
- var ribbonItem = ribbonPanel.NewPushButtonData();
- ribbonItem.SetImage(ComponentImage);
- Assert.IsNotNull(ribbonItem.Image);
- ribbonItem.SetImage(imageSource);
- Assert.IsNull(ribbonItem.Image);
- }
-
- [Test]
- public void ComboBoxData_SetImage_Should_BeRemoved()
- {
- var ribbonItem = ribbonPanel.NewComboBoxData();
- ribbonItem.SetImage(ComponentImage);
- Assert.IsNotNull(ribbonItem.Image);
- ribbonItem.SetImage(imageSource);
- Assert.IsNull(ribbonItem.Image);
- }
-
- [Test]
- public void ComboBoxMemberData_SetImage_Should_BeRemoved()
- {
- var ribbonItem = ribbonPanel.NewComboBoxMemberData();
- ribbonItem.SetImage(ComponentImage);
- Assert.IsNotNull(ribbonItem.Image);
- ribbonItem.SetImage(imageSource);
- Assert.IsNull(ribbonItem.Image);
- }
-
- [Test]
- public void TextBoxData_SetImage_Should_BeRemoved()
- {
- var ribbonItem = ribbonPanel.NewTextBoxData();
- ribbonItem.SetImage(ComponentImage);
- Assert.IsNotNull(ribbonItem.Image);
- ribbonItem.SetImage(imageSource);
- Assert.IsNull(ribbonItem.Image);
- }
- #endregion
- }
-
public class RevitCreateItemsImageTests : BaseCreatePanelTests
{
PushButton pushButton;
diff --git a/ricaun.Revit.UI.Tests/Items/Extensions/RevitImageSourceTests.cs b/ricaun.Revit.UI.Tests/Items/Extensions/RevitImageSourceTests.cs
new file mode 100644
index 0000000..9523b18
--- /dev/null
+++ b/ricaun.Revit.UI.Tests/Items/Extensions/RevitImageSourceTests.cs
@@ -0,0 +1,84 @@
+using NUnit.Framework;
+
+namespace ricaun.Revit.UI.Tests.Items.Extensions
+{
+ public class RevitImageSourceTests : BaseCreatePanelTests
+ {
+ System.Windows.Media.ImageSource imageSource = null;
+ const string ComponentImage = "/UIFrameworkRes;component/ribbon/images/revit.ico";
+
+ #region RibbonItem
+ [Test]
+ public void PushButton_SetImage_Should_BeRemoved()
+ {
+ var ribbonItem = ribbonPanel.CreatePushButton();
+ ribbonItem.SetImage(ComponentImage);
+ Assert.IsNotNull(ribbonItem.Image);
+ ribbonItem.SetImage(imageSource);
+ Assert.IsNull(ribbonItem.Image);
+ }
+
+ [Test]
+ public void ComboBox_SetImage_Should_BeRemoved()
+ {
+ var ribbonItem = ribbonPanel.CreateComboBox();
+ ribbonItem.SetImage(ComponentImage);
+ Assert.IsNotNull(ribbonItem.Image);
+ ribbonItem.SetImage(imageSource);
+ Assert.IsNull(ribbonItem.Image);
+ }
+
+ [Test]
+ public void TextBox_SetImage_Should_BeRemoved()
+ {
+ var ribbonItem = ribbonPanel.CreateTextBox();
+ ribbonItem.SetImage(ComponentImage);
+ Assert.IsNotNull(ribbonItem.Image);
+ ribbonItem.SetImage(imageSource);
+ Assert.IsNull(ribbonItem.Image);
+ }
+ #endregion
+
+ #region RibbonItemData
+ [Test]
+ public void PushButtonData_SetImage_Should_BeRemoved()
+ {
+ var ribbonItem = ribbonPanel.NewPushButtonData();
+ ribbonItem.SetImage(ComponentImage);
+ Assert.IsNotNull(ribbonItem.Image);
+ ribbonItem.SetImage(imageSource);
+ Assert.IsNull(ribbonItem.Image);
+ }
+
+ [Test]
+ public void ComboBoxData_SetImage_Should_BeRemoved()
+ {
+ var ribbonItem = ribbonPanel.NewComboBoxData();
+ ribbonItem.SetImage(ComponentImage);
+ Assert.IsNotNull(ribbonItem.Image);
+ ribbonItem.SetImage(imageSource);
+ Assert.IsNull(ribbonItem.Image);
+ }
+
+ [Test]
+ public void ComboBoxMemberData_SetImage_Should_BeRemoved()
+ {
+ var ribbonItem = ribbonPanel.NewComboBoxMemberData();
+ ribbonItem.SetImage(ComponentImage);
+ Assert.IsNotNull(ribbonItem.Image);
+ ribbonItem.SetImage(imageSource);
+ Assert.IsNull(ribbonItem.Image);
+ }
+
+ [Test]
+ public void TextBoxData_SetImage_Should_BeRemoved()
+ {
+ var ribbonItem = ribbonPanel.NewTextBoxData();
+ ribbonItem.SetImage(ComponentImage);
+ Assert.IsNotNull(ribbonItem.Image);
+ ribbonItem.SetImage(imageSource);
+ Assert.IsNull(ribbonItem.Image);
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/ricaun.Revit.UI.Tests/Items/Items/RevitComboBoxTests.cs b/ricaun.Revit.UI.Tests/Items/Items/RevitComboBoxTests.cs
index 05865f2..00aacd8 100644
--- a/ricaun.Revit.UI.Tests/Items/Items/RevitComboBoxTests.cs
+++ b/ricaun.Revit.UI.Tests/Items/Items/RevitComboBoxTests.cs
@@ -15,6 +15,22 @@ public void CreateComboBox()
comboBox = ribbonPanel.CreateComboBox();
}
+ [Test]
+ public void SetImage_ShouldBe_Image()
+ {
+ Assert.IsNull(comboBox.Image);
+ comboBox.SetImage(BaseImage.Revit);
+ Assert.IsNotNull(comboBox.Image);
+ }
+
+ [Test]
+ public void SetLargeImage_ShouldBe_Image()
+ {
+ Assert.IsNull(comboBox.Image);
+ comboBox.SetLargeImage(BaseImage.Revit);
+ Assert.IsNotNull(comboBox.Image);
+ }
+
[TestCase(1)]
[TestCase(2)]
[TestCase(3)]
diff --git a/ricaun.Revit.UI.Tests/Items/Items/RevitTextBoxTests.cs b/ricaun.Revit.UI.Tests/Items/Items/RevitTextBoxTests.cs
index 7c35f15..55c5e6f 100644
--- a/ricaun.Revit.UI.Tests/Items/Items/RevitTextBoxTests.cs
+++ b/ricaun.Revit.UI.Tests/Items/Items/RevitTextBoxTests.cs
@@ -14,6 +14,22 @@ public void CreateTextBox()
textBox = ribbonPanel.CreateTextBox();
}
+ [Test]
+ public void SetImage_ShouldBe_Image()
+ {
+ Assert.IsNull(textBox.Image);
+ textBox.SetImage(BaseImage.Revit);
+ Assert.IsNotNull(textBox.Image);
+ }
+
+ [Test]
+ public void SetLargeImage_ShouldBe_Image()
+ {
+ Assert.IsNull(textBox.Image);
+ textBox.SetLargeImage(BaseImage.Revit);
+ Assert.IsNotNull(textBox.Image);
+ }
+
[TestCase(true)]
[TestCase(false)]
public void SetShowImageAsButton_Should_Be(bool show)
diff --git a/ricaun.Revit.UI.Tests/Items/RevitStackedItemsTests.cs b/ricaun.Revit.UI.Tests/Items/RevitStackedItemsTests.cs
index 5646f0e..e4c6df3 100644
--- a/ricaun.Revit.UI.Tests/Items/RevitStackedItemsTests.cs
+++ b/ricaun.Revit.UI.Tests/Items/RevitStackedItemsTests.cs
@@ -25,6 +25,33 @@ public void CreateRow(int numberOfCommands)
Assert.AreEqual(expectadRowPanels, ribbonRowPanel.Length);
}
+ [TestCase(2)]
+ [TestCase(3)]
+ [TestCase(4)]
+ [TestCase(6)]
+ [TestCase(9)]
+ [TestCase(20)]
+ public void CreateRowLarge(int numberOfCommands)
+ {
+ var pushButtons = Enumerable.Range(0, numberOfCommands)
+ .Select(e => ribbonPanel.CreatePushButton())
+ .ToArray();
+
+ var ribbonRowPanel = ribbonPanel.RowLargeStackedItems(pushButtons);
+
+ var expectadRowPanels = Math.Ceiling(numberOfCommands / 2.0);
+
+ Assert.AreEqual(expectadRowPanels, ribbonRowPanel.Length);
+
+ foreach (var rowPanel in ribbonRowPanel)
+ {
+ foreach (var item in rowPanel.Items)
+ {
+ Assert.AreEqual(item.Size, Autodesk.Windows.RibbonItemSize.Large);
+ }
+ }
+ }
+
[TestCase(2)]
[TestCase(3)]
[TestCase(4)]
diff --git a/ricaun.Revit.UI/RibbonItemExtension.cs b/ricaun.Revit.UI/RibbonItemExtension.cs
index 467a903..ce1503f 100644
--- a/ricaun.Revit.UI/RibbonItemExtension.cs
+++ b/ricaun.Revit.UI/RibbonItemExtension.cs
@@ -149,7 +149,7 @@ public static TRibbonItem SetToolTipImage(this TRibbonItem ribbonIt
#region Set RibbonButton
///
- /// Set RibbonButton/ComboBox Image
+ /// Set RibbonButton/ComboBox/TextBox Image
///
///
///
@@ -166,12 +166,13 @@ public static TRibbonItem SetImage(this TRibbonItem ribbonItem, str
}
///
- /// Set RibbonButton/ComboBox LargeImage
+ /// Set RibbonButton/ComboBox/TextBox LargeImage
///
///
///
///
///
+ /// When or does not have LargeImage, the Image is changed instead.
public static TRibbonItem SetLargeImage(this TRibbonItem ribbonItem, string largeImage) where TRibbonItem : RibbonItem
{
var bitmapSource = largeImage?.GetBitmapSource();
@@ -204,12 +205,13 @@ public static TRibbonItem SetImage(this TRibbonItem ribbonItem, Ima
}
///
- /// Set RibbonButton/ComboBox LargeImage
+ /// Set RibbonButton/ComboBox/TextBox LargeImage
///
/// RibbonButton
///
///
///
+ /// When or does not have LargeImage, the Image is changed instead.
public static TRibbonItem SetLargeImage(this TRibbonItem ribbonItem, ImageSource largeImage) where TRibbonItem : RibbonItem
{
if (ribbonItem is RibbonButton ribbonButton)
@@ -222,6 +224,9 @@ public static TRibbonItem SetLargeImage(this TRibbonItem ribbonItem
else if (ribbonItem is ComboBox comboBox)
comboBox.SetImage(largeImage);
+ else if (ribbonItem is TextBox textBox)
+ textBox.SetImage(largeImage);
+
return ribbonItem;
}
#endregion
diff --git a/ricaun.Revit.UI/RibbonStackExtension.cs b/ricaun.Revit.UI/RibbonStackExtension.cs
index cc62340..b60c8d5 100644
--- a/ricaun.Revit.UI/RibbonStackExtension.cs
+++ b/ricaun.Revit.UI/RibbonStackExtension.cs
@@ -14,12 +14,24 @@ public static class RibbonStackExtension
///
///
///
- /// The is divided into groups of a maximum of 3 in each RibbonRowPanel
+ /// The is divided into groups of a maximum of 3 in each RibbonRowPanel with Image size.
public static Autodesk.Windows.RibbonRowPanel[] RowStackedItems(this RibbonPanel ribbonPanel, params RibbonItem[] ribbonItems)
{
return ribbonPanel.CreateRowStackedItemsWithMax(ribbonItems);
}
+ ///
+ /// Create Row Panels and move the to the new panels
+ ///
+ ///
+ ///
+ ///
+ /// The is divided into groups of a maximum of 2 in each RibbonRowPanel with LargeImage size.
+ public static Autodesk.Windows.RibbonRowPanel[] RowLargeStackedItems(this RibbonPanel ribbonPanel, params RibbonItem[] ribbonItems)
+ {
+ return ribbonPanel.CreateRowStackedItemsWithMax(2, ribbonItems).SetRibbonItemSize();
+ }
+
///
/// Create Flow Panels and move the to the new panels
///
diff --git a/ricaun.Revit.UI/Utils/RibbonItemPanelExtension.cs b/ricaun.Revit.UI/Utils/RibbonItemPanelExtension.cs
index 51cffcd..a3b4b59 100644
--- a/ricaun.Revit.UI/Utils/RibbonItemPanelExtension.cs
+++ b/ricaun.Revit.UI/Utils/RibbonItemPanelExtension.cs
@@ -69,6 +69,40 @@ public static Autodesk.Windows.RibbonRowPanel AddRibbonItem(this Autodesk.Window
ribbonRowPanel.Items.Add(UpdateForRibbonRowPanel(ribbonItem));
return ribbonRowPanel;
}
+ ///
+ /// Set each items to
+ ///
+ ///
+ ///
+ ///
+ public static Autodesk.Windows.RibbonRowPanel[] SetRibbonItemSize(
+ this Autodesk.Windows.RibbonRowPanel[] ribbonRowPanels,
+ Autodesk.Windows.RibbonItemSize ribbonItemSize = Autodesk.Windows.RibbonItemSize.Large)
+ {
+ foreach (var ribbonRowPanel in ribbonRowPanels)
+ {
+ ribbonRowPanel.SetRibbonItemSize(ribbonItemSize);
+ }
+ return ribbonRowPanels;
+ }
+
+ ///
+ /// Set items to
+ ///
+ ///
+ ///
+ ///
+ public static Autodesk.Windows.RibbonRowPanel SetRibbonItemSize(
+ this Autodesk.Windows.RibbonRowPanel ribbonRowPanel,
+ Autodesk.Windows.RibbonItemSize ribbonItemSize = Autodesk.Windows.RibbonItemSize.Large)
+ {
+ foreach (var ribbonItem in ribbonRowPanel.Items)
+ {
+ ribbonItem.Size = ribbonItemSize;
+ }
+ return ribbonRowPanel;
+ }
+
internal static Autodesk.Windows.RibbonItem UpdateForRibbonRowPanel(this Autodesk.Windows.RibbonItem ribbonItem)
{
ribbonItem.Size = Autodesk.Windows.RibbonItemSize.Standard;
diff --git a/ricaun.Revit.UI/ricaun.Revit.UI.csproj b/ricaun.Revit.UI/ricaun.Revit.UI.csproj
index 0cd246a..65b4d52 100644
--- a/ricaun.Revit.UI/ricaun.Revit.UI.csproj
+++ b/ricaun.Revit.UI/ricaun.Revit.UI.csproj
@@ -76,7 +76,7 @@
ricaun.Revit.UI
- 0.5.6
+ 0.5.7
{2064ba4d-5527-41e9-8b76-0cbfefa35900}