Author: alanmc
Date: 2007-08-21 15:21:36 -0400 (Tue, 21 Aug 2007)
New Revision: 84582
Added:
trunk/lunareclipse/Properties/PropertyManager.cs
Removed:
trunk/lunareclipse/Properties/PropertyGroup.cs
Modified:
trunk/lunareclipse/ChangeLog
trunk/lunareclipse/Controller/MoonlightController.cs
trunk/lunareclipse/LunarEclipse.mdp
trunk/lunareclipse/Serialization/ReflectionHelper.cs
trunk/lunareclipse/View/MainWindow.cs
Log:
* Controller/MoonlightController.cs, LunarEclipse.mdp,
View/MainWindow.cs, Properties/PropertyManager.cs,
Properties/PropertyGroup.cs, Serialization/ReflectionHelper.cs:
Finally getting the property changing stuff back into a usable
state: Properties are now displayed in the property pane again.
Modified: trunk/lunareclipse/ChangeLog
===================================================================
--- trunk/lunareclipse/ChangeLog 2007-08-21 19:07:27 UTC (rev 84581)
+++ trunk/lunareclipse/ChangeLog 2007-08-21 19:21:36 UTC (rev 84582)
@@ -1,5 +1,13 @@
2007-08-21 Alan McGovern <[EMAIL PROTECTED]>
+ * Controller/MoonlightController.cs, LunarEclipse.mdp,
View/MainWindow.cs,
+ Properties/PropertyManager.cs, Properties/PropertyGroup.cs,
+ Serialization/ReflectionHelper.cs: Finally getting the property
changing
+ stuff back into a usable state: Properties are now displayed in the
+ property pane again.
+
+2007-08-21 Alan McGovern <[EMAIL PROTECTED]>
+
* LunarEclipse.mdp, View/PropertyGroupBrushes.cs,
View/PropertyGroupLayout.cs, View/PropertyGroupAppearance.cs,
Properties/PropertyInfo.cs, Properties/PropertyGroup.cs,
Modified: trunk/lunareclipse/Controller/MoonlightController.cs
===================================================================
--- trunk/lunareclipse/Controller/MoonlightController.cs 2007-08-21
19:07:27 UTC (rev 84581)
+++ trunk/lunareclipse/Controller/MoonlightController.cs 2007-08-21
19:21:36 UTC (rev 84582)
@@ -36,6 +36,7 @@
bool active;
private DrawBase current;
private GtkSilver moonlight;
+ private PropertyManager propertyManager;
private Serializer serializer;
private StoryboardManager storyboardManager;
private AnimationTimeline timeline;
@@ -59,6 +60,11 @@
}
}
+ public PropertyManager PropertyManager
+ {
+ get { return propertyManager; }
+ }
+
public StoryboardManager StoryboardManager
{
get { return storyboardManager; }
@@ -92,6 +98,7 @@
moonlight.Canvas.MouseLeftButtonDown += new
MouseEventHandler(MouseLeftDown);
moonlight.Canvas.MouseMove += new MouseEventHandler(MouseMove);
moonlight.Canvas.MouseLeftButtonUp += new
MouseEventHandler(MouseLeftUp);
+ propertyManager = new PropertyManager(this);
serializer = new Serializer();
storyboardManager = new StoryboardManager(this);
storyboardManager.Add(new Storyboard());
Modified: trunk/lunareclipse/LunarEclipse.mdp
===================================================================
--- trunk/lunareclipse/LunarEclipse.mdp 2007-08-21 19:07:27 UTC (rev 84581)
+++ trunk/lunareclipse/LunarEclipse.mdp 2007-08-21 19:21:36 UTC (rev 84582)
@@ -42,7 +42,7 @@
<File name="./Model/Draw/SelectionDraw.cs" subtype="Code"
buildaction="Compile" />
<File name="./Model/Draw/Selector.cs" subtype="Code" buildaction="Compile"
/>
<File name="./Model/Draw/SquareDraw.cs" subtype="Code"
buildaction="Compile" />
- <File name="./Properties/PropertyGroup.cs" subtype="Code"
buildaction="Compile" />
+ <File name="./Properties/PropertyManager.cs" subtype="Code"
buildaction="Compile" />
<File name="./Serialization/ReflectionHelper.cs" subtype="Code"
buildaction="Compile" />
<File name="./Serialization/Serializer.cs" subtype="Code"
buildaction="Compile" />
<File name="./View/GtkMoonlight.cs" subtype="Code" buildaction="Compile" />
Deleted: trunk/lunareclipse/Properties/PropertyGroup.cs
===================================================================
--- trunk/lunareclipse/Properties/PropertyGroup.cs 2007-08-21 19:07:27 UTC
(rev 84581)
+++ trunk/lunareclipse/Properties/PropertyGroup.cs 2007-08-21 19:21:36 UTC
(rev 84582)
@@ -1,89 +0,0 @@
-// /cvs/lunareclipse/Properties/PropertyGroup.cs created with MonoDevelop
-// User: fejj at 2:27 PM 6/27/2007
-//
-
-using System;
-using System.Collections.Generic;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Shapes;
-
-using LunarEclipse.Model;
-using LunarEclipse.Serialization;
-
-namespace LunarEclipse
-{
- public class PropertyManager
- {
- public event EventHandler<EventArgs> BeforePropertiesUpdated;
- public event EventHandler<EventArgs> PropertiesUpdated;
-
- private string name;
- private List<PropertyInfo> properties;
- private SelectedBorder selectedObject;
- private static Dictionary<DependencyProperty, PropertyInfo>
info;
-
-
- public bool HasProperties
- {
- get { return properties.Count != 0; }
- }
-
- public IList<PropertyInfo> Properties
- {
- get { return properties; }
- }
-
- public virtual SelectedBorder SelectedObject
- {
- get { return selectedObject; }
- set
- {
-
Toolbox.RaiseEvent<EventArgs>(BeforePropertiesUpdated, this, EventArgs.Empty);
- selectedObject = value;
- UpdateProperties();
-
Toolbox.RaiseEvent<EventArgs>(PropertiesUpdated, this, EventArgs.Empty);
- }
- }
-
- static PropertyManager()
- {
- info = new Dictionary<DependencyProperty,
PropertyInfo>();
- info.Add(Rectangle.OpacityProperty, new
PropertyInfo(ReflectionHelper.GetData(Rectangle.OpacityProperty),
PropertyType.Percent));
- info.Add(Rectangle.VisibilityProperty, new
PropertyInfo(ReflectionHelper.GetData(Rectangle.VisibilityProperty),
PropertyType.Visibility));
- info.Add(Rectangle.RadiusXProperty, new
PropertyInfo(ReflectionHelper.GetData(Rectangle.RadiusXProperty),
PropertyType.Double));
- info.Add(Rectangle.RadiusYProperty, new
PropertyInfo(ReflectionHelper.GetData(Rectangle.RadiusYProperty),
PropertyType.Double));
- info.Add(Rectangle.StrokeThicknessProperty, new
PropertyInfo(ReflectionHelper.GetData(Rectangle.StrokeThicknessProperty),
PropertyType.Integer));
- info.Add(Path.DataProperty, new
PropertyInfo(ReflectionHelper.GetData(Path.DataProperty), PropertyType.Data));
-
- // extended properties
- info.Add(Path.StretchProperty, new
PropertyInfo(ReflectionHelper.GetData(Path.StretchProperty),
PropertyType.Stretch, false, true));
- info.Add(Path.StrokeDashArrayProperty, new
PropertyInfo(ReflectionHelper.GetData(Path.StrokeDashArrayProperty),
PropertyType.DashArray, false, true));
- info.Add(Path.StrokeDashCapProperty, new
PropertyInfo(ReflectionHelper.GetData(Path.StrokeDashCapProperty),
PropertyType.PenLineCap, false, true));
- info.Add(Path.StrokeDashOffsetProperty, new
PropertyInfo(ReflectionHelper.GetData(Path.StrokeDashOffsetProperty),
PropertyType.Integer, false, true));
- info.Add(Path.StrokeStartLineCapProperty, new
PropertyInfo(ReflectionHelper.GetData(Path.StrokeStartLineCapProperty),
PropertyType.PenLineCap, false, true));
- info.Add(Path.StrokeEndLineCapProperty, new
PropertyInfo(ReflectionHelper.GetData(Path.StrokeEndLineCapProperty),
PropertyType.PenLineCap, false, true));
- info.Add(Path.StrokeLineJoinProperty, new
PropertyInfo(ReflectionHelper.GetData(Path.StrokeLineJoinProperty),
PropertyType.PenLineJoin, false, true));
- info.Add(Path.StrokeMiterLimitProperty, new
PropertyInfo(ReflectionHelper.GetData(Path.StrokeMiterLimitProperty),
PropertyType.Integer, false, true));
-
- info.Add(Canvas.WidthProperty, new
PropertyInfo(ReflectionHelper.GetData(Canvas.WidthProperty),
PropertyType.Double, false, true));
- info.Add(Canvas.HeightProperty, new
PropertyInfo(ReflectionHelper.GetData(Canvas.HeightProperty),
PropertyType.Double, false, true));
- info.Add(Canvas.LeftProperty, new
PropertyInfo(ReflectionHelper.GetData(Canvas.LeftProperty),
PropertyType.Double, true, false));
- info.Add(Canvas.TopProperty, new
PropertyInfo(ReflectionHelper.GetData(Canvas.TopProperty), PropertyType.Double,
true, false));
- info.Add(Canvas.ZIndexProperty, new
PropertyInfo(ReflectionHelper.GetData(Canvas.ZIndexProperty),
PropertyType.Integer, false, false));
- }
-
- private void UpdateProperties()
- {
- PropertyInfo item = null;
- properties.Clear();
- List<PropertyData> props =
ReflectionHelper.GetProperties(this.selectedObject.Child);
- foreach(PropertyData data in props)
- if(info.TryGetValue(data.Property, out item))
- properties.Add(item);
- else
- Console.WriteLine("Item not usuable: {0}",
data.ShortName);
-
- }
- }
-}
Copied: trunk/lunareclipse/Properties/PropertyManager.cs (from rev 84565,
trunk/lunareclipse/Properties/PropertyGroup.cs)
===================================================================
--- trunk/lunareclipse/Properties/PropertyGroup.cs 2007-08-21 16:24:52 UTC
(rev 84565)
+++ trunk/lunareclipse/Properties/PropertyManager.cs 2007-08-21 19:21:36 UTC
(rev 84582)
@@ -0,0 +1,125 @@
+// /cvs/lunareclipse/Properties/PropertyGroup.cs created with MonoDevelop
+// User: fejj at 2:27 PM 6/27/2007
+//
+
+using System;
+using System.Collections.Generic;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Shapes;
+
+using LunarEclipse.Controller;
+using LunarEclipse.Model;
+using LunarEclipse.Serialization;
+
+namespace LunarEclipse.Model
+{
+ public class PropertyManager
+ {
+ public event EventHandler<EventArgs> BeforePropertiesUpdated;
+ public event EventHandler<EventArgs> PropertiesUpdated;
+
+ private string name;
+ private List<PropertyInfo> properties;
+ private SelectedBorder selectedObject;
+ private Selector selector;
+ private static Dictionary<DependencyProperty, PropertyInfo>
info;
+
+
+ public bool HasProperties
+ {
+ get { return properties.Count != 0; }
+ }
+
+ public IList<PropertyInfo> Properties
+ {
+ get { return properties; }
+ }
+
+ public virtual SelectedBorder SelectedObject
+ {
+ get { return selectedObject; }
+ set
+ {
+
Toolbox.RaiseEvent<EventArgs>(BeforePropertiesUpdated, this, EventArgs.Empty);
+ selectedObject = value;
+ UpdateProperties();
+
Toolbox.RaiseEvent<EventArgs>(PropertiesUpdated, this, EventArgs.Empty);
+ }
+ }
+
+ public PropertyManager(MoonlightController controller)
+ {
+ properties = new List<PropertyInfo>();
+ controller.BeforeDrawChanged += delegate {
+ Console.WriteLine("Hooking out");
+ selector = controller.Current as Selector;
+ if(selector != null)
+ selector.ItemSelected -= ItemSelected;
+
+ };
+ controller.DrawChanged += delegate {
+ Console.WriteLine("Hooking in");
+ selector = controller.Current as Selector;
+ if(selector != null)
+ selector.ItemSelected += ItemSelected;
+ };
+ }
+
+ static PropertyManager()
+ {
+ info = new Dictionary<DependencyProperty,
PropertyInfo>();
+ info.Add(Rectangle.OpacityProperty, new
PropertyInfo(ReflectionHelper.GetData(Rectangle.OpacityProperty),
PropertyType.Percent));
+ info.Add(Rectangle.VisibilityProperty, new
PropertyInfo(ReflectionHelper.GetData(Rectangle.VisibilityProperty),
PropertyType.Visibility));
+ info.Add(Rectangle.RadiusXProperty, new
PropertyInfo(ReflectionHelper.GetData(Rectangle.RadiusXProperty),
PropertyType.Double));
+ info.Add(Rectangle.RadiusYProperty, new
PropertyInfo(ReflectionHelper.GetData(Rectangle.RadiusYProperty),
PropertyType.Double));
+ info.Add(Rectangle.StrokeThicknessProperty, new
PropertyInfo(ReflectionHelper.GetData(Rectangle.StrokeThicknessProperty),
PropertyType.Integer));
+ info.Add(Path.DataProperty, new
PropertyInfo(ReflectionHelper.GetData(Path.DataProperty), PropertyType.Data));
+
+ // extended properties
+ info.Add(Path.StretchProperty, new
PropertyInfo(ReflectionHelper.GetData(Path.StretchProperty),
PropertyType.Stretch, false, true));
+ info.Add(Path.StrokeDashArrayProperty, new
PropertyInfo(ReflectionHelper.GetData(Path.StrokeDashArrayProperty),
PropertyType.DashArray, false, true));
+ info.Add(Path.StrokeDashCapProperty, new
PropertyInfo(ReflectionHelper.GetData(Path.StrokeDashCapProperty),
PropertyType.PenLineCap, false, true));
+ info.Add(Path.StrokeDashOffsetProperty, new
PropertyInfo(ReflectionHelper.GetData(Path.StrokeDashOffsetProperty),
PropertyType.Integer, false, true));
+ info.Add(Path.StrokeStartLineCapProperty, new
PropertyInfo(ReflectionHelper.GetData(Path.StrokeStartLineCapProperty),
PropertyType.PenLineCap, false, true));
+ info.Add(Path.StrokeEndLineCapProperty, new
PropertyInfo(ReflectionHelper.GetData(Path.StrokeEndLineCapProperty),
PropertyType.PenLineCap, false, true));
+ info.Add(Path.StrokeLineJoinProperty, new
PropertyInfo(ReflectionHelper.GetData(Path.StrokeLineJoinProperty),
PropertyType.PenLineJoin, false, true));
+ info.Add(Path.StrokeMiterLimitProperty, new
PropertyInfo(ReflectionHelper.GetData(Path.StrokeMiterLimitProperty),
PropertyType.Integer, false, true));
+
+ info.Add(Canvas.WidthProperty, new
PropertyInfo(ReflectionHelper.GetData(Canvas.WidthProperty),
PropertyType.Double, false, true));
+ info.Add(Canvas.HeightProperty, new
PropertyInfo(ReflectionHelper.GetData(Canvas.HeightProperty),
PropertyType.Double, false, true));
+ info.Add(Canvas.LeftProperty, new
PropertyInfo(ReflectionHelper.GetData(Canvas.LeftProperty),
PropertyType.Double, true, false));
+ info.Add(Canvas.TopProperty, new
PropertyInfo(ReflectionHelper.GetData(Canvas.TopProperty), PropertyType.Double,
true, false));
+ info.Add(Canvas.ZIndexProperty, new
PropertyInfo(ReflectionHelper.GetData(Canvas.ZIndexProperty),
PropertyType.Integer, false, false));
+ }
+ private void ItemSelected(object sender,
SelectionChangedEventArgs e)
+ {
+ if(selector.SelectedObjects.Count != 1)
+ {
+ SelectedObject = null;
+ return;
+ }
+
+ if(selector.SelectedObjects.Count == 1 && e.Selected)
+ SelectedObject = e.SelectedBorder;
+ }
+
+ private void UpdateProperties()
+ {
+ PropertyInfo item;
+ properties.Clear();
+
+ if(this.selectedObject == null)
+ return;
+
+ List<PropertyData> props =
ReflectionHelper.GetProperties(this.selectedObject.Child);
+ foreach(PropertyData data in props)
+ if(info.TryGetValue(data.Property, out item))
+ properties.Add(item);
+ else
+ Console.WriteLine("Item not usuable: {0}",
data.ShortName);
+
+ Console.WriteLine("WAHEY: {0}", properties.Count);
+ }
+ }
+}
Modified: trunk/lunareclipse/Serialization/ReflectionHelper.cs
===================================================================
--- trunk/lunareclipse/Serialization/ReflectionHelper.cs 2007-08-21
19:07:27 UTC (rev 84581)
+++ trunk/lunareclipse/Serialization/ReflectionHelper.cs 2007-08-21
19:21:36 UTC (rev 84582)
@@ -25,7 +25,8 @@
// i.e. the string "Canvas.LeftProperty" is paired with the
DependencyProperty 'Canvas.LeftProperty' etc
private static Dictionary<string, DependencyProperty>
propertyByName;
- // This dictionary contains all the PropertyData objects except
it is keyed by DependencyProperty
+ // This dictionary contains all the PropertyData objects except
it is
+ // keyed by DependencyProperty
private static Dictionary<DependencyProperty, PropertyData>
propertyDataByProperty;
static ReflectionHelper()
@@ -33,7 +34,7 @@
allProperties = new Dictionary<Type,
List<PropertyData>>();
attachedProperties = new List<PropertyData>();
propertyByName = new Dictionary<string,
DependencyProperty>();
-
+ propertyDataByProperty = new
Dictionary<DependencyProperty, PropertyData>();
SetUpList();
}
@@ -137,7 +138,7 @@
}
- private static void SetUpList()
+ private static void SetUpList()
{
DependencyObject instance = null;
Assembly current =
Assembly.GetAssembly(typeof(DependencyProperty));
@@ -154,7 +155,7 @@
// If i can't instantiate the object, that
doesn't matter.
try { instance = Activator.CreateInstance(type)
as DependencyObject; }
catch { instance = null; }
-
+
if(instance == null)
continue;
@@ -173,11 +174,14 @@
string name =
propData.DeclaringType.Name + '.' + propData.ShortName;
if(!propertyByName.ContainsKey(name))
propertyByName.Add(name,
propData.Property);
+
+
if(!propertyDataByProperty.ContainsKey(propData.Property))
+
propertyDataByProperty.Add(propData.Property, propData);
}
}
private static List<PropertyData> FindFields(DependencyObject
item)
- {
+ {
Type baseType = item.GetType();
Type current = baseType;
List<PropertyData> fields = new List<PropertyData>();
Modified: trunk/lunareclipse/View/MainWindow.cs
===================================================================
--- trunk/lunareclipse/View/MainWindow.cs 2007-08-21 19:07:27 UTC (rev
84581)
+++ trunk/lunareclipse/View/MainWindow.cs 2007-08-21 19:21:36 UTC (rev
84582)
@@ -28,6 +28,7 @@
Notebook book;
AnimationTimeline timeline;
Box animationWidgets;
+ VBox propertyPane;
public MainWindow (): base (Gtk.WindowType.Toplevel)
{
@@ -53,11 +54,9 @@
vbox.ShowAll();
mainContainer.Add (vbox);
- //Widget propertyPane = new Properties ();
- //propertyPane.Show ();
- //mainContainer.Add (propertyPane);
-
- //properties = (IPropertyGroup) propertyPane;
+ propertyPane = new VBox ();
+ propertyPane.ShowAll ();
+ mainContainer.Add (propertyPane);
TextView view = new Gtk.TextView(buffer);
view.Show ();
@@ -133,6 +132,10 @@
this.undo.Sensitive =
((UndoEngine)sender).UndoCount != 0;
};
+ controller.PropertyManager.PropertiesUpdated +=
delegate {
+ UpdateProperties();
+ };
+
}
else
{
@@ -140,6 +143,21 @@
}
}
+ private void UpdateProperties()
+ {
+ propertyPane.FreezeChildNotify();
+
+ Widget[] widgets = (Widget[])propertyPane.Children.Clone();
+ foreach(Widget widget in widgets)
+ propertyPane.Remove(widget);
+
+ foreach(PropertyInfo info in
this.controller.PropertyManager.Properties)
+ propertyPane.PackEnd(new
Label(info.PropertyData.ShortName));
+
+ propertyPane.ThawChildNotify();
+ propertyPane.ShowAll();
+ }
+
private VBox InitialiseWidgets()
{
VBox widgets = new VBox();
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches