From 6f2b195dca94c6c1182693dda843ffea52555449 Mon Sep 17 00:00:00 2001 From: Andrei Arekhva Date: Wed, 12 Mar 2025 17:58:27 +0300 Subject: [PATCH 1/9] Apply new styles for the wizard dialog --- .../AppConfigurationWindow.xaml | 106 +++++++----------- .../AppConfigurationWindow.xaml.cs | 1 + .../Models/ThemeOption.cs | 8 +- .../ThemeCollectionView.xaml | 25 +++-- .../ThemeCollectionView.xaml.cs | 4 +- 5 files changed, 61 insertions(+), 83 deletions(-) diff --git a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/AppConfigurationWindow.xaml b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/AppConfigurationWindow.xaml index a1ede6a..fb6cb10 100644 --- a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/AppConfigurationWindow.xaml +++ b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/AppConfigurationWindow.xaml @@ -6,82 +6,58 @@ xmlns:local="clr-namespace:OpenSilver.TemplateWizards.AppCustomizationWindow" WindowStartupLocation="CenterScreen" mc:Ignorable="d" + Background="#F1F1F1" SizeToContent="WidthAndHeight" ResizeMode="NoResize" - Title="OpenSilver Configuration" Icon="Icon.ico"> - + Title="OpenSilver Configuration" + Icon="Icon.ico"> + + - - - - - - - - - - + + + + + - - + + + - - - + + - - - - - - - - - - - - + + + .NET 7 (Out of support) .NET 8 (Long Term Support) .NET 9 (Standard Term Support) + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - + @@ -89,21 +65,21 @@ diff --git a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/AppConfigurationWindow.xaml.cs b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/AppConfigurationWindow.xaml.cs index e59b92a..6d2a1ab 100644 --- a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/AppConfigurationWindow.xaml.cs +++ b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/AppConfigurationWindow.xaml.cs @@ -65,6 +65,7 @@ public AppConfigurationWindow(bool isBusiness = false) if (isBusiness) { //Modern theme is deactivated for now, for Business Application projects + chooseThemeLabel.Visibility = Visibility.Collapsed; chooseThemesCollection.Visibility = Visibility.Collapsed; themeList.Select(ThemeOptions.Classic); } diff --git a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/Models/ThemeOption.cs b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/Models/ThemeOption.cs index b13199a..eb76205 100644 --- a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/Models/ThemeOption.cs +++ b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/Models/ThemeOption.cs @@ -5,15 +5,15 @@ namespace OpenSilver.TemplateWizards.AppCustomizationWindow.Models public class ThemeOptions { public static ThemeOptions Light { get; } = - new ThemeOptions(nameof(Light), "Modern - Light", "/OpenSilver.TemplateWizards;component/Assets/Images/light_theme.png", "#FFFFFF"); + new ThemeOptions(nameof(Light), "Modern Light Theme", "/OpenSilver.TemplateWizards;component/Assets/Images/light_theme.png", "#FFFFFF"); public static ThemeOptions Dark { get; } = - new ThemeOptions(nameof(Dark), "Modern - Dark", "/OpenSilver.TemplateWizards;component/Assets/Images/dark_theme.png", "#111111"); + new ThemeOptions(nameof(Dark), "Modern Dark Theme", "/OpenSilver.TemplateWizards;component/Assets/Images/dark_theme.png", "#111111"); public static ThemeOptions Classic { get; } = - new ThemeOptions(nameof(Classic), "Classic - Silverlight", "/OpenSilver.TemplateWizards;component/Assets/Images/classic_theme.png", "#FFFFFF"); + new ThemeOptions(nameof(Classic), "Classic Silverlight Theme", "/OpenSilver.TemplateWizards;component/Assets/Images/classic_theme.png", "#FFFFFF"); - public static IEnumerable GetThemes() => new ThemeOptions[] { Light, Dark, Classic }; + public static IEnumerable Themes { get; } = new ThemeOptions[] { Light, Dark, Classic }; private ThemeOptions(string name, string title, string thumbnailUri, string backgroundColor) { diff --git a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/ThemeCollectionView.xaml b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/ThemeCollectionView.xaml index 9629871..af0f187 100644 --- a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/ThemeCollectionView.xaml +++ b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/ThemeCollectionView.xaml @@ -3,7 +3,7 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:local="clr-namespace:OpenSilver.TemplateWizards.AppCustomizationWindow" + xmlns:models="clr-namespace:OpenSilver.TemplateWizards.AppCustomizationWindow.Models" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"> @@ -31,7 +31,7 @@ - + @@ -84,7 +84,7 @@ - + @@ -114,17 +114,20 @@ VerticalAlignment="Stretch" > - - + @@ -137,7 +140,7 @@ - - + diff --git a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/ThemeCollectionView.xaml.cs b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/ThemeCollectionView.xaml.cs index 73b14f2..eb55f08 100644 --- a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/ThemeCollectionView.xaml.cs +++ b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/ThemeCollectionView.xaml.cs @@ -1,5 +1,4 @@ -using OpenSilver.TemplateWizards.AppCustomizationWindow.Models; -using System; +using System; using System.Windows.Controls; namespace OpenSilver.TemplateWizards.AppCustomizationWindow @@ -12,7 +11,6 @@ public partial class ThemeCollectionView : UserControl public ThemeCollectionView() { InitializeComponent(); - themeList.ItemsSource = ThemeOptions.GetThemes(); themeList.SelectionChanged += ThemeList_SelectionChanged; } From d70a23816b397f3749ac7f5bcf5a558e4eaf7bd9 Mon Sep 17 00:00:00 2001 From: Andrei Arekhva Date: Thu, 13 Mar 2025 12:10:05 +0300 Subject: [PATCH 2/9] Add styles and images for target platforms --- .../AppConfigurationWindow.xaml | 40 ++-- .../AppConfigurationWindow.xaml.cs | 33 +-- .../Models/TargetPlatform.cs | 11 + .../AppCustomizationWindow/PlatformsView.xaml | 194 ++++++++++++++++++ .../PlatformsView.xaml.cs | 15 ++ .../ThemeCollectionView.xaml | 7 +- .../Assets/Images/platform_android.png | Bin 0 -> 2093 bytes .../Assets/Images/platform_apple.png | Bin 0 -> 1877 bytes .../Assets/Images/platform_linux.png | Bin 0 -> 2029 bytes .../Assets/Images/platform_web.png | Bin 0 -> 14367 bytes .../Assets/Images/platform_windows.png | Bin 0 -> 2784 bytes .../OpenSilver.TemplateWizards.csproj | 14 +- 12 files changed, 270 insertions(+), 44 deletions(-) create mode 100644 src/OpenSilver.TemplateWizards/AppCustomizationWindow/Models/TargetPlatform.cs create mode 100644 src/OpenSilver.TemplateWizards/AppCustomizationWindow/PlatformsView.xaml create mode 100644 src/OpenSilver.TemplateWizards/AppCustomizationWindow/PlatformsView.xaml.cs create mode 100644 src/OpenSilver.TemplateWizards/Assets/Images/platform_android.png create mode 100644 src/OpenSilver.TemplateWizards/Assets/Images/platform_apple.png create mode 100644 src/OpenSilver.TemplateWizards/Assets/Images/platform_linux.png create mode 100644 src/OpenSilver.TemplateWizards/Assets/Images/platform_web.png create mode 100644 src/OpenSilver.TemplateWizards/Assets/Images/platform_windows.png diff --git a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/AppConfigurationWindow.xaml b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/AppConfigurationWindow.xaml index fb6cb10..08a6c4f 100644 --- a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/AppConfigurationWindow.xaml +++ b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/AppConfigurationWindow.xaml @@ -11,8 +11,8 @@ ResizeMode="NoResize" Title="OpenSilver Configuration" Icon="Icon.ico"> - - + + @@ -30,10 +30,10 @@ - + - - + + .NET 7 (Out of support) @@ -48,25 +48,14 @@ - - - - - - - + + - - - - - - - - - - + diff --git a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/AppConfigurationWindow.xaml.cs b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/AppConfigurationWindow.xaml.cs index 6d2a1ab..1125592 100644 --- a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/AppConfigurationWindow.xaml.cs +++ b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/AppConfigurationWindow.xaml.cs @@ -2,6 +2,7 @@ using OpenSilver.TemplateWizards.AppCustomizationWindow.Models; using OpenSilver.TemplateWizards.Shared; using System; +using System.Linq; using System.Windows; namespace OpenSilver.TemplateWizards.AppCustomizationWindow @@ -37,21 +38,25 @@ public MauiHybridPlatform MauiHybridPlatform { MauiHybridPlatform platforms = MauiHybridPlatform.None; - if (IosCheckbox.IsChecked == true) + foreach (var platform in platformList.SelectedItems.OfType()) { - platforms |= MauiHybridPlatform.iOS; - } - if (AndroidCheckbox.IsChecked == true) - { - platforms |= MauiHybridPlatform.Android; - } - if (WindowsCheckbox.IsChecked == true) - { - platforms |= MauiHybridPlatform.Windows; - } - if (MacCheckbox.IsChecked == true) - { - platforms |= MauiHybridPlatform.Mac; + switch (platform.Title.ToLower()) + { + case "ios": + platforms |= MauiHybridPlatform.iOS; + break; + case "android": + platforms |= MauiHybridPlatform.Android; + break; + case "windows": + platforms |= MauiHybridPlatform.Windows; + break; + case "macos": + platforms |= MauiHybridPlatform.Mac; + break; + default: + break; + } } return platforms; diff --git a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/Models/TargetPlatform.cs b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/Models/TargetPlatform.cs new file mode 100644 index 0000000..9b89826 --- /dev/null +++ b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/Models/TargetPlatform.cs @@ -0,0 +1,11 @@ +namespace OpenSilver.TemplateWizards.AppCustomizationWindow.Models +{ + public class TargetPlatform + { + public string Title { get; set; } + public string Framework { get; set; } + public string ThumbnailUri { get; set; } + public double Opacity { get; set; } = 0.6; + public bool IsAlwaysSelected { get; set; } + } +} diff --git a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/PlatformsView.xaml b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/PlatformsView.xaml new file mode 100644 index 0000000..fcf4be1 --- /dev/null +++ b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/PlatformsView.xaml @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/PlatformsView.xaml.cs b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/PlatformsView.xaml.cs new file mode 100644 index 0000000..fd35221 --- /dev/null +++ b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/PlatformsView.xaml.cs @@ -0,0 +1,15 @@ +using System.Windows.Controls; + +namespace OpenSilver.TemplateWizards.AppCustomizationWindow +{ + /// + /// Interaction logic for PlatformsView.xaml + /// + public partial class PlatformsView : ListBox + { + public PlatformsView() + { + InitializeComponent(); + } + } +} diff --git a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/ThemeCollectionView.xaml b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/ThemeCollectionView.xaml index af0f187..198bedf 100644 --- a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/ThemeCollectionView.xaml +++ b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/ThemeCollectionView.xaml @@ -33,7 +33,7 @@ - + @@ -87,7 +87,7 @@ - + @@ -107,7 +107,8 @@ %ssTC6H6$!xnClzG0RY_a!WS0atV{rHmbR2l1rOg=M0(T5(h=d zEu@{2TwX{dHDwH)Bm54|`RbhC?~mX6^?E;__viC`KJVxI$M<;Ar7u&sYn+vh+J{Upn#g!s$anbdePp+9suexVVeXoFy9^F7@f1Gkby#om71NqVEZfOCkf2RzQ$emqeg*TPAR%;Ca;*(gk zJwDcNvFI|+;~cyXmc(KceeO3X)*9rp7+lFN2_w}ib&amQyIda|=pW*Fl8t;31-gcW zH1(mw^F~|9Ur9Wp_Jy1ArP{1CFJ2X{2#}MMVWWON*bV-RSc;bnxLw@O2C( zrSEg37*2EOdwza?DYb2Tb#QRdE7GOdiBs|6Qsaby+HF}>EdBWOv${G%(WmU^OKZ-j zTnA8MdlWRVSggh>`QpWCl)&27!eX6>#ij{*GgP#`2CcYUyVktBdX`8eB2H@(bNT~y zz267}EuSZ0HW`V(&ur{}F8d|wsoDBU z&*RJQUK3TlsV}rz5WNpLo58H2qSoMNwYA82ba!`a!n)2E!a$K_H?cQBR@FidzilE| zSO|RN+uZfjak|9=-_pVLH#U_seP(i%+J_I5_6uKjFHSV3$1Q&l(LBLwi{GNYNw9sD zoRY#mZjMCCMM@cmU!c)iAn^+f;hJgoofN_1B597#AGai`Cb{g^8&qP%3GSp9Xy1&jV7t4Pkd}CE9*(kUtZtb zY|WL_lJM-%B5s&^cz6s^=7*2S>iLcUx?;jz{~Z%HO0^mKFt!G3;ISSU+4JUpzp z9{t-5Mwol{fy|z5!)h?t)Z`(Pm z+h?QS%|zVq%7jn7FDof2Q7lQC%*CyKDS4+p=^kBi%0FTWnCIl(yQf#~U=M}d+@!4u zKfeh@FDpx($YI`6fE3VfgjY5C;cz$&CX@Nb7b(Z=$?L6TFl1h!Q2c_CXQw*;e8=?Z zEOGFKDQ6JuLkaQ-NoDmCe|d!`4D~3^)PEG%3zi2!WhJ@_td*<79&k7u=rzBp zW+iw=FA@J~q`A3Ss^Q_%WZ0AR+*#+xMB=)ruwaVC7lj6Z{-^0*-_e`2yVr$pZ`=ZsRU2n z2#JsXxjv21wr+5BRzMS0Zx&-DP%y7T5?9bC~hD1XM^_p_Zp literal 0 HcmV?d00001 diff --git a/src/OpenSilver.TemplateWizards/Assets/Images/platform_apple.png b/src/OpenSilver.TemplateWizards/Assets/Images/platform_apple.png new file mode 100644 index 0000000000000000000000000000000000000000..20a9b37c59883b5372f4049a36b6cc59e0e6c992 GIT binary patch literal 1877 zcmZ8ic{tnI8jhd{61x-?J7b9?s^~R(ZLu^oQjd}%L6R!QQc7Efwy~66l~P-&NKJzh zTeX%hsaR($RSnZt?P|N05o=4w{B-92bI8h;;Ue27#dMhY;$H zsGtBzc#NZW%-IN9OkBVvDhMBNF+2w8?&zsujzlBPsqga?0nan4w+qe1#SkP81fn1n zAyJSJpj-i{{-Y0XV<05_Jr4#nS_ll10hkEjVw%YJdxDl`gpc#5hdUhCbdvj%~Vh`2b| zdS3BgDT;SKe@?A?xF8LEKMjpVd*on!)v?l=HmOu4UlB<^JzzSdpmGbni2 z(0{k?{#zsRbJjapQGYDfSm}(5PPS#nLGYv2)|1SHlGw(^MvAhM(yNqGH7RF1 zD=RDRYc_&TrxVKFUJ+eomC6+2*l)=1V2=o2JYr){m>UF}MBVNbfcH1Se&r+`IS;yB zay_j-Ic#NRC3Sjw+Ps-xD#KEJDN*EKs`~p79=`fhV?p5VqJ3OkoDH$p z4X`jiR5mmWiJf{m7<^nB?!7Zf5T=LiD8Anm9-H-nhu}j(LrJM_=S%3@bX%I7;HjSMdjlhRDWT4*_cQoHF0WcY*JH#K5TEt z=6wi*b_UjWK7RaoqMXeRk0Mc(3vqLX1_oEeYTR$e>}YY$^5mn9Yqgz6A<} zFR)ApH=NfcX2NcF_AU?-_tmWqCL?rPRY%TF2?PQk+}8ZRPM(ZO&+&QK((>h=d-RBrzC{#`*Xuvqxvq~MCeAnWmX)0F-0Ms+39+th$psAG6;d7Xb}U%}`ZWpm z)sjP~zID(o4^3;&U?WmbS1~4e@MqHNOp~hNrL};HTsZ>e8Ba%sM;=ebaGS?gqg@|m z6Va@c8y2?;SE6?J>HpajgNJk`E427H?+)~ zOBp*O^LN_W$-jt^j*nIq_o_MDm=cYZ0_5;j!(aP;UTa6|)_W&hrO{FkGCSC8J^3SK z8sefH>kgt_03-IjLGfMdwdie;o%0*(dq_7&$IdFTI8h&kUz-Lw;VPM3CFA4%R(Bp) zBlCONc!R*m%G^K~igm}OsjIvD8o91X$tqdy7W5p4cDxl&P{ zFe?p_YUM4XWtWzgO6+(}oMHw~dQZj6JMu!0q&*)3(d2lk+HQxYnHu}oo?|kZT&aAb z$E(jVCrw{B*aig!>EAbf`Y_?~ixITbe zUnd2(uilkM+wHR}NlAcsm`)}}nS{yvO`d3-uEv(NK=zb;(_rfxOLN$ zCo>WvV9J5@or(3b1PN-kz^o}c%Gei~FUuZSi9N+H8r9a;mV4=6i@iQvR#ukviMeP7 kJieOtsZvKV;#jYd2`W1;;Zr1a`S5RWadda6u_NF73ogebI{*Lx literal 0 HcmV?d00001 diff --git a/src/OpenSilver.TemplateWizards/Assets/Images/platform_linux.png b/src/OpenSilver.TemplateWizards/Assets/Images/platform_linux.png new file mode 100644 index 0000000000000000000000000000000000000000..3a69cb670f2f15c1e7e63bdca82d5383c0b8fb06 GIT binary patch literal 2029 zcmZ8idpOf;9RJPS4i<{kSdmg^i7Co9^pM+BlFKHEP3{S8lFOmZj!U^E*K7;9hFs$$ zWG*3Nl;jdoQ!X>NQY1P*opb&<-{<+fpU?ODzJI;nTUM54FbTK>001zYxv@3KW*|(( zMZxp_+^we|K`7Q{MnD-?X$EwJJq*tp0zhS=O(#et`l2+gi5(>F_IZ1%tZ+ zOzZ<}{M-X>kjQR;70JstK*Q3+R#`_wOGC$PC`}%$sdcl*x#Mt1Kpb>L060VhfPl&Z zgyO$?>otcU&|h&OP-{Vi02z=SKzKz9|B8Eqddr9)w)+3$|6K||0pN}pAPiQZjvhln zvj3U7)ghAo&!iMkZm3ji>t2uv!lIE0eN1t zAob0(T9WreIDB5HLRj~%8g-B)IW_XiRs7wJ(ssJs%ZX`w>=Er09|N~UOZL`t7JMrOXQokVXnJODRL%lnl9gd ze_MW?X+|X0V0Hox-jb+dUD$KEp=h#pd+xfGck(4{xQr!9D6TKM?ej4u`98uOW)L9 zeJ9Okd10+aW(OXPb`{+?9;C>WFgQ!eFVC?-yKpTtVOj2Jo9B3T`^rD9Vy} z1C!RxL3YyRP1`i3dsz`#*W?x$o2yhAbzq_Hyb~rNY+|xN6zK3?g#FXn1*!E4_$3 zGaGO2zK&36>pGtBR^7Mm5O4Pt9gJIYdsY7XBYsa@>bAGPvR`^;uL8EicHkxWP4Lb~ zm#*l#bsb^0vXun7e%bo$6LPz@M~af4{8dfRVQR-+M{HykHgF*)2Qi6^FkdZx z4D4W;aG_)Gr01|0)3iP$_m=wopW^V&4A+3BL5o1!Q-8M9zdb>q*2`e2XhP`@5-aaQ zV;YS?Jm-m*OH9=_b@5p4^7`;1HjuTh=I{Ed)G7R>e^f#0D0yv9#5EtR$Z{u}+wUak z>N#nKC&^!O(T9JCBGw<|oHgz}mkC?@hCR?zo3B|(d{gGgg&BPg=l(=`D^>e&go9mv zOZ=-2Dmy9OrAoKxkJQ7!9fy&_1_>W6l5Tk0-_*jrR+#JwlUi(PF3@v;j=p*E$Z{Vc zvD}RigRhG481h@<$g3x6&+%}_(xp@+?3A%fX!nWx?5>hnBBsJ&C_%4)e0bOKhL7<| zRcQf2wjtAOw^3?ok>huk)0^NkXuZc*m3XaW+cgT*g21TAPxiP_I~1swVX@1OfQ(+f zhpVm_^^iDSzm{=$+=dvY7W&nGvjYOX^cmr$_B7w8H-PL4euycHaGoapH5w~J{H{hLSMZLUD^msgc;l`ZJwGxii0^C} zJq9lyNjB(w_~Cp?sZz~+{F?L4{9;BlOAw>V@tP_k_m0Zu<~Zt?Md=+SRH=K9e9$O9 zAk%w@(Gqm1_{-1d#j`)v1Tp=szw^SA4@B)F%Z2RczVw(GmzG6jlD>?q4JY3;lI`5Z+n&Vqi|n62gG$34-G<0n!X4 z2Lb^8#2~yGL4C<^_L5po0045|e*`vYSNiiyiQ_D$>8xUB>g;CZXaZ0)vaoe#kQY-W zW@lh#VE)mdjQC~KXrd`)DkVh&fc+An0C-?f0I)A4{YCiy7yoxRRA3PQqX+-O%wXVv zZ(m&di!4GQ|3`26h5s9dU-X~<|KtDPMF9{1Kr9RZ^2>sWg_Q{`_kW}Q=K+=bzmXEZ z@P7mRD-QVoSSoXKeWCyB#mvO?-&uU;*~B^6U<3ewV?s(4r0TAJ?hTWPHQ(~Vdr$jn zb9ttm9PRhLv>(fQdI`-K%qlWWDv}xRp2AW#pJJf@hVoV`6wF)uOQ_eR;LnGgqBxO3J<9xTqS)djDC>d9LonTqhartx z`cWX;qS$LsZg`XpBB6;CwwAKkBp>~T$Kx-vw=<~fM?t9y>?~(lz0E0W5lo5}hNb9d z`672^S$aH{+xD$W{#imWeWvTmhzQKfm|#1#1R}{&0%Bqq7t}L52%JZlZm-~QueKj> zT)_!-={!yqMF#f`8U{5e(Pu<>ye`{mmP*eZofgPsGsHePh<=og=cw?Gey1`$dl-Il z0F5~MT|TkkWD>o}_+i7eCW39Cc7Rulfs-O-X=Vg8ICPPeyjeNe4^fWIDK5&Rpe_fgdirTu;kwkyv6q3X792rsR53LhLBepJ#u>k@?-J)6Vdkg6-Q#Xo`J~Zl_bw{-4^17~Sz^lZc((pj zx$9AxV1~b@as-=kOz^fa!m%hPW1yq%g3+>aM_n102|6Bh+JSpWHQJyDcGWS44T!ce zg@xk?Ku9*US3@MWZV1-pEMw7)``j6J@^v7Qe_N~H>gT#iw9V|KigD-Ah z;7Zm&W%(}TWF$=hK)A#l+QH_oun4V9ci>zvSLy z9wdeexV4B^yePM5%N2sydeij|K0G$*e0*9h$+>DFe-2Gqc-N0e(j{jWvBGKG$nlFE zeLWay{_`Ei+BT;qeyjpuxDi03VVJ?rrg<1R>oUunkGZmI*5UGArn}lX^Xiruji)B; zBpr3u;z|)mORjx$6bDoF%d@v8`KO_QTW-T6Wz`B`e6NuSK7{vKm$m0Nioa28xBD%Pew{S5b#!}E>`z>h z6TK?3dP0Ty$_nm38MW+m6!+=BJ)x0zU5UFMg9~#O-Wd@|8M#z|SmIdS(WcHrAIYjS zMZz&JU<=j#BUq|~$+f2WX4rEOXE`G+Z!b%_?%u(?-Zy3{Kg-K`OQ$lE4|(6!R?$sJ z$Vc{(+<@N0wYAqE?&)ja7P};Jg^lPDnS~h6jzACxgmr=;wQIK@;mbfIydM-R)lIE< zQGnHb3DHyE(+EmV&C7N#XV*s=hb_d@O~wQ-V*Wio#{r@0??ev2GcappD%bvam=GZS zLpdf2GGGq&vO-zeeajyFR?M)~DJ&*0PB)k%qgrDjrr+StBenP{dX%@lX_mUCYfK5N zU$bJl*&0Pgp0x(Hi8c?_Y~Xnt2HX%(*}sW#(m4&L+QFbKg+k4z-Y^ zk#W*g#YCR?G`1h#P?S5W{eB2b0hLEHtQoGTigA?0)?#qrO$AlJWSqs*c=Q5I*^&{f#L<9crYYOxDlk@?5_{K1FBLxY>ZOHfQc8l9@xv;&lfFG8936_;d zXwYMmnu*r7B~Qs%BmJ{`{-au2rCV%R`bdX3s9E31mEbk7E=}#d7q&87o>cBnPys(?)Yg!>CrCeUvS#Cp zwl&IuDLxN3JSX@~O1N_b(I;1;g4awW^y+w~-Ng5Mv(%nXN;u6l_HMB3&wJeiKebP& zXRmmu^=fjXrP;(&?rTS8_q+Sjdb$G)nzQ`bEf!QXK3;5Yuevt)&0_va!6;;NGN`I> z<^)<4;^~yR%!^AG68IU$nx@7oCtKFWpYi=w&D9%%%8i|o^az9xQH@nE6_NR)|6|yN zIo@F|?z@UyLfD#6X(2v9XMgQ?dLuPtEPMT?l+J7pf&1q%D8g0l(yPsMs@d|r&whv& zg9m3AlJxpp5c4-9z{F~?eD$R>gXUe9L6!Hx%;iDKVHB$>KaLd^{E{|U(wV6j>>mZO zLC)z^JGqj&kD47~q2Ln6B`G14!bZp)>J0V!r~3R#F2{=#@yF2VL3y1aijZ*1=njeb z`@9PK+3-+lmwUafA8Vl~{{FSF)NoNOUUZmxzUY`a?r7ZP^Y!Gwf~a+)lQD7PVRF?K zJErCf9JIK+y~lRBU@&~F8EQymWD(ZDA9#-LFsOIDvf-%8Lx|M-1*7K29h26&X>I!q zWtaP(E)gX`G3Gk0*&Nm8kY3PaY~s?e@nIuFfiYmYQV>gk4o(fkjbJGm&BUPoQ>B1A zFMI4ALp6uk?x{>wgvgLooSAZ`mT+Cqd4>^hrb5H01-mCsiO$-c>wh*arstw=gevzD z;CkG@<-q=?&Ha!JzZ1)aaWa)&s{KK@Lq{F|DYdU4-vwDDH0vFc9fuH#nJj)p-lhL$^9_^*Oe_0lP%4@ZdQN!NdJmDS5DOVQL=>jKEA?WF zJr}1^Q)LJnZ8aICdSWaqaUfW;>|2ToS*2<(WNCNDWSqhIqe9hPri0nD(K%lyZ6%(I zkoO4`3ErP#d_r<3x{E%`>e56SyC*1XTcUKn(V|~i-&Fm@QSG&HGJ!oEOMi8y^JX$V zK>-n}CxW$tCsZV?w=@Hs2Ekcl_TiOm04!2GzpAhuW`pC~y}yj?7s_%dtv3U3>*LF` z_!=%MR47A2P?C!GOsZ;t!gvVfVe+u>Y=}iC4a-K>0IyeLMBAm~kz`RL5Jmu4Fd2lQ zo|t@X3nGh<8t%_9L{cs~KLtEY#@t)I~+!ADf;FZOYTsVRAa38UZZUt+)C1e)hOqg8UNaGo>JbCu8RKXL+$%CDg7==Np9rZ_- zK&?hR^um=Adg2-k9_0?htM=BwAhBtOAE3nFB2J0tBCx>^pF>$~h&}$8Vsf#UtuUT) zguYM`j@FPVQgfSCG9v;Rw45l_{qScoTtZCk2|Jl!b;u7jH4gXN8 z(hPzY(7_UF1EhNdHy|Tp;-0wAt0bZJ5YX$Q9Vj0qC`V4zqyC%IgEZ@}8?HK15R-^3 zX_OD5VEkT=_{U}Y&t8{fFq=d(Ty*M?HZZB!7q&z+WG~qVXq*M0GGr`c0i$Et(9rDd zuEHBJ4z62GZEowqPiyE?rbkHD=JF(fxj`i46yF)iGPX??JaQj3tvir=1s&FOy@WoZ z+C*?>Y`U|}KX*g9Y3X?ST&%w3_VhF$3yDUOQl&km!8%86j$4B7$@&nzDzL?nzK%HJ7Kol${(Z`0=p07@My;ewb8|8DL6DI; zp@PiLdr|F7-b~g0Yt>w3FhKur1)=J;jb+qGE`z$%3dk&Ta67`*GE-2PfF`IYe@`@= zvo{_ylh(!Ck4BxWhk@V);h5THW@(UGg7Y3L7SSVfLm?Efs;xWiI*3b}U zjWm5h$@GKPj?$q0d9%)6Zz?&1(NpN}EKymnFi>mGf|PlPqZ{b}g0KIP5MX2oF{Ks$ zUagDCi^kTuOr$FZ4siO85YR~=ztu_wCz-Aav*r%HY#>sNnU@@mU~!)=ID50NV*YZg zFx{RKL&7_mOP9Gp$Ci&YZUzFp!RMTq%_)^bg-<{aq1I!5_)F$};@;s#_LI;BjKY!6 zm)C^m1IXXDdq&<>3s6;{v8EP4s3WvB!GXB-4d}%R`J@t@il1v0YZ!(ATcKvmhTj!9 zhAiRswo=`&UP!CrEhGw1*U)%{y~OAKn$)kBTsb!M=?r#b!v{#}M)y)FnKaGKz6 zpf!Mc-WkAVvNc`ag^YIcxBc^{6?(+0#+zLRNR;{;ZsQ zCSF*m?+V;y4o3V3Q=EU9ssO~|u(zu&V5Xd$>h}tYSl-}+EVzEKumuw}G(!AXdHUhD z_a=C4>`yp4nRp&m$FCqEr4WVfu0^@l}Vv zHf9H+H?t|wypbRa$a0?G2_Al&ZvCo8(oioSd!#u7W!p2M&`v!j*l1?Ko8>dK?}x4s z+xk)mt?!NEXnHnNNvNr4PBBh{B6+dS>v%O(if)p^h10fsKG57UED)=-)3Jzt=Y^Hn zrkUI(4%Oj6^F$l+h*>nv#x8l{f1qA2BLgV}>Bq=i>;nS$DaD#Nzh~J#jS*$EY%ln9 zvMN)@*G4*#AnQjbIKobZk|}Tz(`gFH@)YDgjou|uT<1urRTDo3I`X_9ksSBnYp;eN z0p0FS=UdExkEBIe;I%y7vP7N$g*BKeOTX_b@gtgy?WIpI2@hJQsg!^MwQaD*;B55` zyhkRrU-~1&y=~ivsa8D#T6RYeFjq)v?~Gn~%2uB0z~k^>95&}03hCCvc)LR!$Sh#p zO>R5I_ePH;D~`s<@TYL#K?#^Sbo^+yqd!?d3xD!O<@{My*d`U@2KoBs&$dX@x-HE= zz+_7vNpNCXK$hoJrab;{A*@zXvE-Cux{I`JA|?%Zo2?u~#hpYkE$H*%e0r>vy$r39 zn0kO{Crlxxe*L0xY;uY}ZV;l7<8m3geY2uX1-#B*p2N_QevW8$FW~I9=ECS6>~OM|oRQ8rcC;$&)pC0XpT@5g<ZkGQpED7Z;agPn8; z&Sn}7+!Q07VQ@NEK1XyQUlcaWjcsp_P?Md+`lqGk{A?OEBy~Ki7CEF75_; zF6vL6@fs-jH}ibzYaEi2_#6z7!{^&b?E@k1jj8)`3e3l<~rRqe?5{ z9LW5;75DXFD@5ilmBB!4PgNxqG$*PS!-W5JPi#s+z6`RIpe4frN@NnO$(~~4I=9=+ zcTH4~Hz~FM>9O*(oUR{Hd7Ye6v#Z!K7WEE|JA9|P=wLD2rY(`SjaQ0H4RBAPX$An~>Xwg66g0fPJ4ci{I)j#hQf z7S8K$isOCQoeaIEwRa-YB0?QHj+u%w=u0~xm?2Z_#*;-oMGbREYPEmnB_c=Aui@1& z3#wTFa1urbbwR2tw>UtJ<;dXOVm^`#QZ@+RmcAZ=UjtD#6aOIOvtDa*e=Zj43tlRb z>%Q@Gko~5BO%2B%`uo%JRh(skfi&C?Cbu{Z?x~TlXKRIDP+Fnw0@P`VQuqi|v|PgH z5kqL3%R%fBm>%4&pwLh&ro>FXt+Q9n1Ls3R8*mWhGtJ(MpIv)NciDmFtU8jvmNN;^r<$K@Voy+Z^%{F)6dc45P7#1q^ zQ?;VI5>m`Jbei58#J=uhOE*>vXgLkoh+?*2z$0fsL_hpLZaE;c6}I&97G0 zTGvqiPJmt|$|YOXn~YYRIdpd*#%L00JZ&6PDj!*Iv|`%2q(mTx3VpQM_7sIZat4>a zq*AWg@l-xmtKkqhk4g6|#<**oIcY3 z_)pQY+V`X>ol+$CIMGhO5Sl0l0?vtuWV*|w+G<_WL0`FgS#M;|?|X9>4c@Agy?GdT zdO;59g7CIH9(yPV;+j3}DWeI;{s}eXkmkCJM9z<7+7(iZ#V*celtGH&-|>MDEKLEo z4XT-UFOQNbvpKa&EIugpLAqkShuq7LNzRWp*SMTr6pR}PBlxd<@T_>e+6oP0<~nZ} zZL2v_6*tvh)SHE@@D*Q6+MQ#?HJV4~@B}YF&+Qc+r6iYdek4{wvo?4FF!*OH27(*J z9{o2@0<)5lfK+e|pGH}dT84VIo-{StIb=HJYpaKM?o32}DG`Cgfu`YC`*aKFdG{&?eqMvou95lkN5DPd2S`X3i|6JmCR zzv5a#u^U268cfQVFrz?*aEb!qNiy(`u(#>EeiCY_jSqD<%WGLK7JiS&RI`d9THBH{az?h3XO+Y0S2iT&5D;mFWaV# zJ`2wu#})nM9nO4gLKY$VG_&A#bC5}K~1p1e_!+9)irL(HyegNtuRPq^R=ipuNi8787Fd| z-U-PqpQgTGM)_vwhs4@cO<{8itt|XUNKWRUcMBBc(9~?#bIJi~Icdw@d8Y5YY|4uc zq|rPK`=P527oqumF_lF9zE1COV6*v^d)cp}P%LP(t8p%BqX6WOFgp7)bxaV^8bBk6 zu{9X?8`o&~z_>lCzXdXDHO$5X$U=q%@-d|YK{tod)h97YjjNE@KiorPXSt$m=7cdW zXU~v8+5DA^}vr)nSZvImzoEVHoHp|J)jQgm|c2JcGBDZul44>Ig( zi*b)NPUAD8HS|pIs}L)7TD8vV;oAj=$FRUm_)<~~Cj5KbPfZMJ@$egPa6%MlM1Zjl z_^7GD1DK6)TE8avM3~jiZS%L38*WL4AMb(xPz+?L=z=^EKZzPxOMFr$FUXI7+DP

LvRJQ?+LRIS-}Q! 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 CuX|$v literal 0 HcmV?d00001 diff --git a/src/OpenSilver.TemplateWizards/Assets/Images/platform_windows.png b/src/OpenSilver.TemplateWizards/Assets/Images/platform_windows.png new file mode 100644 index 0000000000000000000000000000000000000000..b97763f84922385cbebc463949dfe4c39ce62a7a GIT binary patch literal 2784 zcmZ7&c|25Wdkm9hB5PqrDI!zKgzWoRhQ<~%vQLZ{Ymxopsw_p57~7;q*-40$CFUAL z$jBbqN3v&)@E!Nw@B8C>f4}E_miJlCIq!Lvcym)jZZ1(S5D3JLHbPkf*cboaS3oEnpl=g! z&DSj;2!ERZGRJ%P1Y9)Lw-Q&ph`gvs7)%ucblwtd&~9in0>l9@5RfPf1jGVRhtXmG z(uYrTj)nDaIT)akEMO2XfNcTrh-Ld*P6X(~OWo&Eg;l?Jf#5i;Q|AGz<+C6swe~0zg9>&xx-VrLfg6?&{kmC51~;O2hSVqPJDLzHxUCK8EYMj8(n6dH+b_oop>RF)@+%;K74{ z0BGFxT`((aCxgLwotm23ViGGfMUNNwP*qhGGu288L&w68xi^yBU8PH`Ym${x>v7uB(%BKC}?W#XVRRv#V=j*J$L0w zKV`n;Kq&oB!_Q{^mNJPWQc_#dOye)(dV| zvLN7M_-TtBc5l6g5`1(_O}j$(A1&CNKJ#^FdpkY($rCAmfB$@sSmf|tN=k}M7ln=p zUl%>9WQ)Zff4Br6Kl8OO4^p;1!OG5qdTGZiBJvAftQ%NjiC26uJ*8gaP`i0nbcj-} zhf=Sg=I6J%bY?21SZI)UN7e|} zIk0X1>AUC*cY?1${Np4y;QL#4%QnssJzQH6*Mf`QR1TeU!v*ZwgmVMMi&gd%Lj~xE67L^91;S ze{~L2(^=-JpEP$S!Qka!+%;~$Qy4538{6BL@aU0fOiYXwW}-W8wX#xSeyj`S}kdP3Yu&~-(^~X))<5aaOESu{xI(-#JT8jRuhP5rbGvBZL zaiPItHnH6BUUpn@*GovrQ_1i>$rc$eZ*S|mR?PUtXr8*WM~~nxpAZzxG0wjS>t}p4 zwJFrL_l0YODsYUdj2B+On%7$6aIYU1?MR+3EG$ItZY`UYyn3}!mGJma$JYlZGrn^Z zRf`$7aDDQK(#V+2V%jr}uqOrWL40>3^b>xm`KUyD#^cPs=*C%m85!3Y=`}i-Nk~Yz zo$xkl!F#x}jhNF(QDXl|*(<0Jc&k@Zx+u6XTC0>vuqWNRD3|R)!zgxkv|Dx76%x5m3egJ_>SUw)?Js@ zN5A~0G=P6G7e&_;*m(NUucF}f>tk*&5^vqQh4T}mX%Zr5p-ETfq->H7rZb(&5N}k~ z)Utm5iW1^&goiyVeX0$0Lm&_(l~J4#tQU+XIy*a`y(?xhUcGQc8A!=p3kwUzEWPIQ zxZ87nc{P=wCqg@t{9`>mH-Z?ig-1r@Z$PL;QY+=3R*>h>_f74`(;3ckaU_-F`Z!$L zz1h&OJTJ7tE#b7!GR^Hug%Ugaj!$y*y%G(NB9L^1s z8|HNWrFr(*Q0Cw`Ecm z!9h$JiNx>S*5~G(R@_<|-MtGWv<(JHPsUpf<>#UN)Z|NQ;G^J*EGoyLE1hs~JJqln zcIDN%~MeR)|+;;eY<)Hv;~rfXeDEo723bs)jEWdc+335R*Kl1=#% z?2JuJ)SUl{%)apc!=T$q1HQ0C+(k7F&v9z&* zA5J~<8()(yjmmU%b@9CDDgw%z56xW}z_vyW3Qn zW5rgU`Zj%Zk^%K(w;mzr9}Q>D_Ige_G^EElk70B2^A9rIXs(NVKeVjfX*lp@N-*c@ z@#1xnxyMvUw)&nOkm6XxihQ5ef**ozIyKQ0`${B5&{1DP?RqXh(Ee@h?cw)71T+%) zPi3|Pg@_ksJtk|u(V7BMs(aB#Y>ss=n)uOIe6y|NM=IX|G|JSKZ{=%q(9r;)hrw0) zseeez%E~6~_vlAN><3m%QM%(H2LsjVafv8?)UhL>8GYB|J{4{*{%-R7NE(J>(^(MZ ztlv_<^!1%}P`1lLf4p`CW3t@c*IoK@z<^;4{q++>eXefy3C+% rh AppConfigurationWindow.xaml + + + PlatformsView.xaml + @@ -67,6 +71,10 @@ MSBuild:Compile Designer + + Designer + MSBuild:Compile + Designer MSBuild:Compile @@ -79,11 +87,15 @@ - + + + + + \ No newline at end of file From 2591fa545806fb12bb0d5ff3363c694f72309e49 Mon Sep 17 00:00:00 2001 From: Andrei Arekhva Date: Thu, 13 Mar 2025 12:27:01 +0300 Subject: [PATCH 3/9] Add a WPF project to test wizard dialogs --- src/TestWizard/App.xaml | 3 +++ src/TestWizard/App.xaml.cs | 21 +++++++++++++++++++++ src/TestWizard/AssemblyInfo.cs | 10 ++++++++++ src/TestWizard/TestWizard.csproj | 15 +++++++++++++++ src/VSExtension.OpenSilver.sln | 14 ++++++++++++++ 5 files changed, 63 insertions(+) create mode 100644 src/TestWizard/App.xaml create mode 100644 src/TestWizard/App.xaml.cs create mode 100644 src/TestWizard/AssemblyInfo.cs create mode 100644 src/TestWizard/TestWizard.csproj diff --git a/src/TestWizard/App.xaml b/src/TestWizard/App.xaml new file mode 100644 index 0000000..4f64504 --- /dev/null +++ b/src/TestWizard/App.xaml @@ -0,0 +1,3 @@ + diff --git a/src/TestWizard/App.xaml.cs b/src/TestWizard/App.xaml.cs new file mode 100644 index 0000000..82e6b58 --- /dev/null +++ b/src/TestWizard/App.xaml.cs @@ -0,0 +1,21 @@ +using OpenSilver.TemplateWizards.AppCustomizationWindow; +using System.Windows; + +namespace TestWizard; + +///

+/// Interaction logic for App.xaml +/// +public partial class App : Application +{ + public App() + { + MainWindow = new Window(); + + var configurationWindow = new AppConfigurationWindow(); + _ = configurationWindow.ShowDialog(); + + MainWindow.Close(); + } +} + diff --git a/src/TestWizard/AssemblyInfo.cs b/src/TestWizard/AssemblyInfo.cs new file mode 100644 index 0000000..a8dc727 --- /dev/null +++ b/src/TestWizard/AssemblyInfo.cs @@ -0,0 +1,10 @@ +using System.Windows; + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] diff --git a/src/TestWizard/TestWizard.csproj b/src/TestWizard/TestWizard.csproj new file mode 100644 index 0000000..0856efa --- /dev/null +++ b/src/TestWizard/TestWizard.csproj @@ -0,0 +1,15 @@ + + + + WinExe + net9.0-windows + enable + enable + true + + + + + + + diff --git a/src/VSExtension.OpenSilver.sln b/src/VSExtension.OpenSilver.sln index 71f7d58..9521791 100644 --- a/src/VSExtension.OpenSilver.sln +++ b/src/VSExtension.OpenSilver.sln @@ -27,6 +27,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSilverFSApplicationTemp EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSilverMauiHybridTemplate", "OpenSilverMauiHybridTemplate\OpenSilverMauiHybridTemplate.csproj", "{F7380B38-5D00-4527-B0D2-4DF1826881F9}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestWizard", "TestWizard\TestWizard.csproj", "{DAC7670D-DD11-43CE-A120-231D896EB506}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -181,6 +183,18 @@ Global {F7380B38-5D00-4527-B0D2-4DF1826881F9}.Release|arm64.Build.0 = Release|arm64 {F7380B38-5D00-4527-B0D2-4DF1826881F9}.Release|x86.ActiveCfg = Release|x86 {F7380B38-5D00-4527-B0D2-4DF1826881F9}.Release|x86.Build.0 = Release|x86 + {DAC7670D-DD11-43CE-A120-231D896EB506}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DAC7670D-DD11-43CE-A120-231D896EB506}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DAC7670D-DD11-43CE-A120-231D896EB506}.Debug|arm64.ActiveCfg = Debug|Any CPU + {DAC7670D-DD11-43CE-A120-231D896EB506}.Debug|arm64.Build.0 = Debug|Any CPU + {DAC7670D-DD11-43CE-A120-231D896EB506}.Debug|x86.ActiveCfg = Debug|Any CPU + {DAC7670D-DD11-43CE-A120-231D896EB506}.Debug|x86.Build.0 = Debug|Any CPU + {DAC7670D-DD11-43CE-A120-231D896EB506}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DAC7670D-DD11-43CE-A120-231D896EB506}.Release|Any CPU.Build.0 = Release|Any CPU + {DAC7670D-DD11-43CE-A120-231D896EB506}.Release|arm64.ActiveCfg = Release|Any CPU + {DAC7670D-DD11-43CE-A120-231D896EB506}.Release|arm64.Build.0 = Release|Any CPU + {DAC7670D-DD11-43CE-A120-231D896EB506}.Release|x86.ActiveCfg = Release|Any CPU + {DAC7670D-DD11-43CE-A120-231D896EB506}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE From a152c7f66e84b2510a9bd92c581586082fde8bd9 Mon Sep 17 00:00:00 2001 From: Andrei Arekhva Date: Thu, 13 Mar 2025 13:15:29 +0300 Subject: [PATCH 4/9] Improve buttons --- .../AppConfigurationWindow.xaml | 71 +++++++++++-------- 1 file changed, 41 insertions(+), 30 deletions(-) diff --git a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/AppConfigurationWindow.xaml b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/AppConfigurationWindow.xaml index 08a6c4f..ceaedcf 100644 --- a/src/OpenSilver.TemplateWizards/AppCustomizationWindow/AppConfigurationWindow.xaml +++ b/src/OpenSilver.TemplateWizards/AppCustomizationWindow/AppConfigurationWindow.xaml @@ -53,37 +53,48 @@
- + + - - - + + + + + +
+
+ + + +