Browse Source

- Fix #551: Resource Editor: Content column doesn't update properly.

- Re-added view for icon files in resources.
pull/517/head
Andreas Weizel 12 years ago
parent
commit
ec3c9d9ded
  1. 12
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/BitmapExtensions.cs
  2. 13
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/AddNewFileCommand.cs
  3. 1
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEditorDisplayBinding.cs
  4. 6
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ViewModels/ResourceEditorViewModel.cs
  5. 21
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ViewModels/ResourceItem.cs
  6. 2
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Views/IResourceEditorView.cs
  7. 7
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Views/ImageViewBase.xaml.cs
  8. 2
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Views/ResourceEditorView.xaml.cs

12
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/BitmapExtensions.cs

@ -17,9 +17,11 @@ @@ -17,9 +17,11 @@
// DEALINGS IN THE SOFTWARE.
using System;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Interop;
using System.Windows.Media;
using System.Windows.Media.Imaging;
namespace ResourceEditor
@ -46,5 +48,15 @@ namespace ResourceEditor @@ -46,5 +48,15 @@ namespace ResourceEditor
}
return bs;
}
public static ImageSource ToImageSource(this Icon icon)
{
ImageSource imageSource = Imaging.CreateBitmapSourceFromHIcon(
icon.Handle,
Int32Rect.Empty,
BitmapSizeOptions.FromEmptyOptions());
return imageSource;
}
}
}

13
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/AddNewFileCommand.cs

@ -42,15 +42,15 @@ namespace ResourceEditor.Commands @@ -42,15 +42,15 @@ namespace ResourceEditor.Commands
fdiag.Filter = StringParser.Parse("${res:SharpDevelop.FileFilter.AllFiles}|*.*");
fdiag.Multiselect = true;
fdiag.CheckFileExists = true;
if ((bool)fdiag.ShowDialog()) {
foreach (string filename in fdiag.FileNames) {
string oresname = Path.ChangeExtension(Path.GetFileName(filename), null);
if (oresname == "")
oresname = "new";
string resname = oresname;
int i = 0;
TestName:
if (editor.ContainsResourceName(resname)) {
@ -61,12 +61,15 @@ namespace ResourceEditor.Commands @@ -61,12 +61,15 @@ namespace ResourceEditor.Commands
resname = oresname + "_" + i;
goto TestName;
}
object tmp = LoadResource(filename);
if (tmp == null) {
continue;
}
editor.ResourceItems.Add(new ResourceItem(editor, resname, tmp));
var newResourceItem = new ResourceItem(editor, resname, tmp);
editor.ResourceItems.Add(newResourceItem);
editor.SelectedItems.Clear();
editor.SelectedItems.Add(newResourceItem);
}
}
}

1
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEditorDisplayBinding.cs

@ -68,6 +68,7 @@ namespace ResourceEditor @@ -68,6 +68,7 @@ namespace ResourceEditor
// Register different resource item viewers
resourceEditor.AddItemView(ResourceItemEditorType.String, new TextView());
resourceEditor.AddItemView(ResourceItemEditorType.Bitmap, new ImageViewBase());
resourceEditor.AddItemView(ResourceItemEditorType.Icon, new ImageViewBase());
resourceEditor.DirtyStateChanged += (sender, e) => {
if (e.IsDirty)
SetDirty(sender, new EventArgs());

6
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ViewModels/ResourceEditorViewModel.cs

@ -123,8 +123,6 @@ namespace ResourceEditor.ViewModels @@ -123,8 +123,6 @@ namespace ResourceEditor.ViewModels
if (view != null) {
view.SelectionChanged -= View_SelectionChanged;
view.EditingStarted -= View_EditingStarted;
view.EditingFinished -= View_EditingFinished;
view.EditingCancelled -= View_EditingCancelled;
ResourceItems.CollectionChanged -= ResourceItems_CollectionChanged;
}
@ -145,8 +143,6 @@ namespace ResourceEditor.ViewModels @@ -145,8 +143,6 @@ namespace ResourceEditor.ViewModels
};
view.SelectionChanged += View_SelectionChanged;
view.EditingStarted += View_EditingStarted;
view.EditingFinished += View_EditingFinished;
view.EditingCancelled += View_EditingCancelled;
ResourceItems.CollectionChanged += ResourceItems_CollectionChanged;
}
}
@ -192,6 +188,8 @@ namespace ResourceEditor.ViewModels @@ -192,6 +188,8 @@ namespace ResourceEditor.ViewModels
var itemView = itemViews[selectedItem.ResourceType];
itemView.ResourceItem = selectedItem;
view.SetItemView(itemView);
} else {
view.SetItemView(null);
}
}
}

21
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ViewModels/ResourceItem.cs

@ -40,7 +40,7 @@ namespace ResourceEditor.ViewModels @@ -40,7 +40,7 @@ namespace ResourceEditor.ViewModels
Binary
}
public class ResourceItem : DependencyObject
public class ResourceItem : DependencyObject, INotifyPropertyChanged
{
ResourceItemEditorType resourceType;
ResourceEditorViewModel resourceEditor;
@ -50,6 +50,7 @@ namespace ResourceEditor.ViewModels @@ -50,6 +50,7 @@ namespace ResourceEditor.ViewModels
{
this.resourceEditor = resourceEditor;
this.Name = name;
this.SortingCriteria = name;
this.ResourceValue = resourceValue;
this.resourceType = GetResourceTypeFromValue(resourceValue);
}
@ -58,11 +59,25 @@ namespace ResourceEditor.ViewModels @@ -58,11 +59,25 @@ namespace ResourceEditor.ViewModels
{
this.resourceEditor = resourceEditor;
this.Name = name;
this.SortingCriteria = name;
this.ResourceValue = resourceValue;
this.resourceType = GetResourceTypeFromValue(resourceValue);
this.Comment = comment;
}
#region INotifyPropertyChanged implementation
public event PropertyChangedEventHandler PropertyChanged;
void RaisePropertyChanged(string name)
{
if (PropertyChanged != null) {
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
#endregion
public static readonly DependencyProperty NameProperty =
DependencyProperty.Register("Name", typeof(string), typeof(ResourceItem),
new FrameworkPropertyMetadata());
@ -120,6 +135,10 @@ namespace ResourceEditor.ViewModels @@ -120,6 +135,10 @@ namespace ResourceEditor.ViewModels
{
base.OnPropertyChanged(e);
if (e.Property.Name == ResourceValueProperty.Name) {
// Update content property as well
RaisePropertyChanged("Content");
}
if (e.Property.Name == IsEditingProperty.Name) {
bool previouslyEditing = (bool)e.OldValue;
bool isEditing = (bool)e.NewValue;

2
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Views/IResourceEditorView.cs

@ -40,8 +40,6 @@ namespace ResourceEditor.Views @@ -40,8 +40,6 @@ namespace ResourceEditor.Views
}
event EventHandler EditingStarted;
event EventHandler EditingFinished;
event EventHandler EditingCancelled;
void SetItemView(IResourceItemView view);

7
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Views/ImageViewBase.xaml.cs

@ -77,6 +77,13 @@ namespace ResourceEditor.Views @@ -77,6 +77,13 @@ namespace ResourceEditor.Views
UpdateLinkText = SD.ResourceService.GetString("ResourceEditor.BitmapView.UpdateBitmap");
}
break;
case ResourceItemEditorType.Icon:
var gdiIcon = resourceItem.ResourceValue as System.Drawing.Icon;
if (gdiIcon != null) {
DisplayedImage = gdiIcon.ToImageSource();
UpdateLinkText = SD.ResourceService.GetString("ResourceEditor.BitmapView.UpdateBitmap");
}
break;
}
}
}

2
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Views/ResourceEditorView.xaml.cs

@ -37,8 +37,6 @@ namespace ResourceEditor.Views @@ -37,8 +37,6 @@ namespace ResourceEditor.Views
public event EventHandler SelectionChanged;
public event EventHandler EditingStarted;
public event EventHandler EditingFinished;
public event EventHandler EditingCancelled;
public ResourceEditorView()
{

Loading…
Cancel
Save