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

Reply via email to