From 1a97c3404e846e8788dc191a85297145b6f2d7bb Mon Sep 17 00:00:00 2001 From: Hyrules Date: Sat, 4 Feb 2017 16:06:37 -0500 Subject: [PATCH] Change scene Icon. Implemented an option for wrapping or not the objects on the mainview. Added the group zero item on the main window. --- HueLib2/Objects/Resourcelinks/Resourcelink.cs | 3 +- WinHue3/MainWindow.xaml | 16 +++++- WinHue3/Models/ResourceLinkCreatorModel.cs | 9 ++- WinHue3/Properties/Resources.resx | 8 +-- WinHue3/Resources/1486263478_movie-01.png | Bin 0 -> 4121 bytes WinHue3/Utils/HueObjectHelper.cs | 54 ++++++++++++++++-- WinHue3/ViewModels/AnimatorView.cs | 1 - .../MainFormViewModel_Commands.cs | 24 +++++++- .../MainFormViewModel_Methods.cs | 12 +++- WinHue3/Views/Form_ResourceLinksCreator.xaml | 14 ++++- .../Views/Form_ResourceLinksCreator.xaml.cs | 36 ++++++++++-- WinHue3/WinHue3.csproj | 25 +------- WinHue3_1.sln | 5 ++ inno/Output/WinHue 3 BETA 25 Setup.exe | Bin 3743074 -> 3813638 bytes inno/Output/WinHue 3 BETA 25 Setup.zip | Bin 3718783 -> 0 bytes inno/installer.iss | 5 +- scratchpad.md | 2 + 17 files changed, 163 insertions(+), 51 deletions(-) create mode 100644 WinHue3/Resources/1486263478_movie-01.png delete mode 100644 inno/Output/WinHue 3 BETA 25 Setup.zip create mode 100644 scratchpad.md diff --git a/HueLib2/Objects/Resourcelinks/Resourcelink.cs b/HueLib2/Objects/Resourcelinks/Resourcelink.cs index 8a890f4f..2a503756 100644 --- a/HueLib2/Objects/Resourcelinks/Resourcelink.cs +++ b/HueLib2/Objects/Resourcelinks/Resourcelink.cs @@ -18,8 +18,7 @@ public class Resourcelink : HueObject /// /// Name of the resource link /// - [DataMember(EmitDefaultValue = false, IsRequired = false), Category("Resource Link"), - Description("Name of the resource link")] + [DataMember(EmitDefaultValue = false, IsRequired = false), Category("Resource Link"),Description("Name of the resource link")] public string name { get diff --git a/WinHue3/MainWindow.xaml b/WinHue3/MainWindow.xaml index 58c51e42..e3dc0ce8 100644 --- a/WinHue3/MainWindow.xaml +++ b/WinHue3/MainWindow.xaml @@ -10,6 +10,7 @@ xmlns:viewmodels="clr-namespace:WinHue3.ViewModels" xmlns:converters="clr-namespace:WinHue3.Converters" xmlns:controls="clr-namespace:WinHue3.Controls" + xmlns:tt="clr-namespace:WinHue3.Utils" x:Class="WinHue3.MainWindow" Title="WinHue 3" Height="768" Width="1024" WindowStartupLocation="CenterScreen" MinHeight="600" MinWidth="800" Icon="Resources/HueGroupOn-Large.png" Closing="Window_Closing" ResizeMode="CanResizeWithGrip" > @@ -18,6 +19,14 @@ + @@ -120,6 +129,7 @@ + @@ -192,10 +202,10 @@ - + - - + + diff --git a/WinHue3/Models/ResourceLinkCreatorModel.cs b/WinHue3/Models/ResourceLinkCreatorModel.cs index a3ea1ce9..170350e5 100644 --- a/WinHue3/Models/ResourceLinkCreatorModel.cs +++ b/WinHue3/Models/ResourceLinkCreatorModel.cs @@ -17,12 +17,13 @@ public class ResourceLinkCreatorModel : ValidatableBindableBase private string _description; private bool? _recycle; private ushort _classId; + private bool _showId; public ResourceLinkCreatorModel() { _name = string.Empty; ListlinkObject = new ObservableCollection(); - ClassId = 0; + ClassId = 1; } [StringLength(32,MinimumLength = 1,ErrorMessageResourceName = "ResourceLinks_NameNeeded", ErrorMessageResourceType = typeof(GlobalStrings))] @@ -55,5 +56,11 @@ public ushort ClassId get { return _classId; } set { SetProperty(ref _classId,value); } } + + public bool ShowID + { + get { return _showId; } + set { SetProperty(ref _showId, value); } + } } } diff --git a/WinHue3/Properties/Resources.resx b/WinHue3/Properties/Resources.resx index 2674003c..3cdb72d5 100644 --- a/WinHue3/Properties/Resources.resx +++ b/WinHue3/Properties/Resources.resx @@ -118,7 +118,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - ..\Resources\animation.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -155,6 +154,7 @@ ..\Resources\effects.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m @@ -306,9 +306,6 @@ ..\Resources\rules.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\scene.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\SceneMapping.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -388,4 +385,7 @@ ..\Resources\1416205084_Book_edit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\1486263478_movie-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/WinHue3/Resources/1486263478_movie-01.png b/WinHue3/Resources/1486263478_movie-01.png new file mode 100644 index 0000000000000000000000000000000000000000..c52f8cd45b66a44b959c63e26275f241ea6572e8 GIT binary patch literal 4121 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 B*FgXP literal 0 HcmV?d00001 diff --git a/WinHue3/Utils/HueObjectHelper.cs b/WinHue3/Utils/HueObjectHelper.cs index 2981fa2e..17e7f582 100644 --- a/WinHue3/Utils/HueObjectHelper.cs +++ b/WinHue3/Utils/HueObjectHelper.cs @@ -155,12 +155,25 @@ public static HelperResult GetBridgeGroups(Bridge bridge) HelperResult hr = new HelperResult { Success = bresult.Success, - Hrobject = - bresult.Success - ? ProcessGroups((Dictionary)bresult.resultobject) - : bresult.resultobject }; + if (hr.Success) + { + Dictionary gs = (Dictionary) bresult.resultobject; + Group zero = GetGroupZero(bridge); + if (zero != null) + { + gs.Add("0",zero); + } + + hr.Hrobject = ProcessGroups(gs); + } + else + { + hr.Hrobject = bresult.resultobject; + } + + log.Debug("List groups : " + Serializer.SerializeToJson(hr.Hrobject)); return hr; } @@ -476,13 +489,44 @@ public static HelperResult GetBridgeDataStore(Bridge bridge) HelperResult hr = new HelperResult { Success = bresult.Success, - Hrobject = bresult.Success ? ProcessDataStore((DataStore)bresult.resultobject) : bresult.resultobject + }; + if (hr.Success) + { + DataStore ds = (DataStore) bresult.resultobject; + Group zero = GetGroupZero(bridge); + if (zero != null) + { + ds.groups.Add("0",zero); + } + + hr.Hrobject = ProcessDataStore(ds); + } + else + { + hr.Hrobject = bresult.resultobject; + } + log.Debug("Bridge data store : " + Serializer.SerializeToJson(hr.Hrobject)); return hr; } + private static Group GetGroupZero(Bridge bridge) + { + + CommandResult cr = bridge.GetObject("0"); + if (cr.Success) + { + return (Group) cr.resultobject; + } + else + { + return null; + } + } + + /// /// Process the data from the bridge datastore. /// diff --git a/WinHue3/ViewModels/AnimatorView.cs b/WinHue3/ViewModels/AnimatorView.cs index 09d114de..ea5087ae 100644 --- a/WinHue3/ViewModels/AnimatorView.cs +++ b/WinHue3/ViewModels/AnimatorView.cs @@ -1,5 +1,4 @@ using System.Windows.Input; -using ICSharpCode.AvalonEdit; using HueLib2; namespace WinHue3 diff --git a/WinHue3/ViewModels/MainFormViewModels/MainFormViewModel_Commands.cs b/WinHue3/ViewModels/MainFormViewModels/MainFormViewModel_Commands.cs index 6968708e..774294a3 100644 --- a/WinHue3/ViewModels/MainFormViewModels/MainFormViewModel_Commands.cs +++ b/WinHue3/ViewModels/MainFormViewModels/MainFormViewModel_Commands.cs @@ -25,6 +25,7 @@ private bool IsObjectSelected() private bool IsEditable() { if (!IsObjectSelected()) return false; + if (IsGroupZero()) return false; return !(SelectedObject is Light); } @@ -168,6 +169,23 @@ private bool CanClone() return SelectedObject is Scene | SelectedObject is Group | SelectedObject is Rule | CanCloneSensor() | SelectedObject is Resourcelink; } + private bool CanRename() + { + if (!IsObjectSelected()) return false; + return !IsGroupZero(); + } + + private bool CanDelete() + { + if (!IsObjectSelected()) return false; + return !IsGroupZero(); + } + + private bool IsGroupZero() + { + return SelectedObject is Group && SelectedObject.Id == "0"; + } + //*************** MainMenu Commands ******************** public ICommand OpenSettingsWindowCommand => new RelayCommand(param => OpenSettingsWindow()); @@ -209,8 +227,8 @@ private bool CanClone() public ICommand DoBridgePairingCommand => new RelayCommand(param => DoBridgePairing(ListBridges)); //*************** Context Menu Commands ************* - public ICommand DeleteObjectCommand => new RelayCommand(param => DeleteObject(), (param) => IsObjectSelected()); - public ICommand RenameObjectCommand => new RelayCommand(param => RenameObject(), (param) => IsObjectSelected()); + public ICommand DeleteObjectCommand => new RelayCommand(param => DeleteObject(), (param) => CanDelete()); + public ICommand RenameObjectCommand => new RelayCommand(param => RenameObject(), (param) => CanRename()); public ICommand EditObjectCommand => new RelayCommand(param => EditObject(), (param) => IsEditable()); public ICommand IdentifyLongCommand => new RelayCommand(param => Identify("lselect"), (param) => CanIdentify()); public ICommand IdentifyShortCommand => new RelayCommand(param => Identify("select"), (param) => CanIdentify()); @@ -246,7 +264,7 @@ private bool CanClone() public ICommand OpenAboutWindowCommand => new RelayCommand(param => OpenAboutWindow()); - + public ICommand StartProcDumpCommand => new RelayCommand(param => StartProcDump()); // public ICommand RssFeedMonCommand => new RelayCommand(param => RunRssFeedMon(), (param) => EnableButtons()); // // public ICommand RssFeedMonSettingsCommand => new RelayCommand(param => RssFeedMonSettings(), (param) => EnableButtons()); diff --git a/WinHue3/ViewModels/MainFormViewModels/MainFormViewModel_Methods.cs b/WinHue3/ViewModels/MainFormViewModels/MainFormViewModel_Methods.cs index 891b41cf..9c733273 100644 --- a/WinHue3/ViewModels/MainFormViewModels/MainFormViewModel_Methods.cs +++ b/WinHue3/ViewModels/MainFormViewModels/MainFormViewModel_Methods.cs @@ -156,7 +156,7 @@ private void DoubleClickObject() SelectedObject.Image = newimg; int index = _listBridgeObjects.FindIndex(x => x.Id == SelectedObject.Id && x.GetType() == SelectedObject.GetType()); if (index == -1) return; - if (SelectedObject.HasProperty("state")) + if (SelectedObject is Light) { ((Light)SelectedObject).state.on = !((Light)SelectedObject).state.on; ((Light)ListBridgeObjects[index]).state.on = !((Light)ListBridgeObjects[index]).state.on; @@ -948,5 +948,15 @@ private void WrapText() WinHueSettings.settings.WrapText = MainFormModel.WrapText; WinHueSettings.Save(); } + + private void StartProcDump() + { + ProcessStartInfo psi = new ProcessStartInfo($"{AppDomain.CurrentDomain.BaseDirectory}procdump.exe") + { + Arguments = $@"-e -w -ma WinHue3.exe {Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)}\WinHue3", + UseShellExecute = false + }; + Process.Start(psi); + } } } diff --git a/WinHue3/Views/Form_ResourceLinksCreator.xaml b/WinHue3/Views/Form_ResourceLinksCreator.xaml index 68d1bcb2..4c79e6c8 100644 --- a/WinHue3/Views/Form_ResourceLinksCreator.xaml +++ b/WinHue3/Views/Form_ResourceLinksCreator.xaml @@ -6,7 +6,7 @@ xmlns:local="clr-namespace:WinHue3" xmlns:resx="clr-namespace:WinHue3.Resources" xmlns:viewmodel="clr-namespace:WinHue3.ViewModels" - xmlns:CustomControls="clr-namespace:WinHue3.Controls" xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" x:Class="WinHue3.Form_ResourceLinksCreator" + xmlns:CustomControls="clr-namespace:WinHue3.Controls" xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" x:Name="Form_ResourceLink" x:Class="WinHue3.Form_ResourceLinksCreator" xmlns:converter="clr-namespace:WinHue3.Converters" mc:Ignorable="d" Title="{x:Static resx:GUI.ResourceLinkCreatorForm_Title}" Height="352.861" Width="599.472" WindowStartupLocation="CenterOwner" Icon="/WinHue3;component/Resources/resource.png" ResizeMode="CanResizeWithGrip" MinHeight="600" MinWidth="800"> @@ -14,6 +14,7 @@ + +