~ubuntu-branches/ubuntu/oneiric/monodevelop/oneiric-updates

« back to all changes in this revision

Viewing changes to src/addins/MonoDevelop.GtkCore/libstetic/wrapper/RadioMenuItem.cs

  • Committer: Bazaar Package Importer
  • Author(s): Jo Shields
  • Date: 2009-02-18 08:40:51 UTC
  • mfrom: (1.2.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20090218084051-gh8m6ukvokbwj7cf
Tags: 1.9.2+dfsg-1ubuntu1
* Merge from Debian Experimental (LP: #330519), remaining Ubuntu changes:
  + debian/control:
    - Update for Gnome# 2.24
    - Add libmono-cairo1.0-cil to build-deps to fool pkg-config check

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
using System;
 
2
using System.Collections;
 
3
using System.Xml;
 
4
using System.CodeDom;
 
5
 
 
6
namespace Stetic.Wrapper {
 
7
 
 
8
        public class RadioMenuItem : MenuItem, IRadioGroupManagerProvider {
 
9
 
 
10
                static RadioGroupManager GroupManager = new RadioGroupManager (typeof (Gtk.RadioMenuItem));
 
11
 
 
12
                public override void Wrap (object obj, bool initialized)
 
13
                {
 
14
                        base.Wrap (obj, initialized);
 
15
 
 
16
                        Gtk.RadioMenuItem radio = (Gtk.RadioMenuItem)Wrapped;
 
17
                        if (!initialized)
 
18
                                Group = GroupManager.LastGroup;
 
19
                        else if (radio.Group == null)
 
20
                                Group = radio.Name;
 
21
                }
 
22
                
 
23
                IRadioGroupManager IRadioGroupManagerProvider.GetGroupManager ()
 
24
                {
 
25
                        return GroupManager;
 
26
                }
 
27
 
 
28
                protected override void ReadProperties (ObjectReader reader, XmlElement elem)
 
29
                {
 
30
                        string group = (string)GladeUtils.ExtractProperty (elem, "group", "");
 
31
                        bool active = (bool)GladeUtils.ExtractProperty (elem, "active", false);
 
32
                        base.ReadProperties (reader, elem);
 
33
 
 
34
                        if (group != "")
 
35
                                Group = group;
 
36
                        else
 
37
                                Group = Wrapped.Name;
 
38
                        if (active)
 
39
                                ((Gtk.RadioMenuItem)Wrapped).Active = true;
 
40
                }
 
41
 
 
42
                protected override XmlElement WriteProperties (ObjectWriter writer)
 
43
                {
 
44
                        XmlElement elem = base.WriteProperties (writer);
 
45
                        string group = GroupManager.GladeGroupName (Wrapped);
 
46
                        if (group != Wrapped.Name)
 
47
                                GladeUtils.SetProperty (elem, "group", group);
 
48
                        return elem;
 
49
                }
 
50
                
 
51
                protected override void GeneratePropertySet (GeneratorContext ctx, CodeExpression var, PropertyDescriptor prop)
 
52
                {
 
53
                        if (prop.Name == "Group") {
 
54
                                CodeExpression groupExp = GroupManager.GenerateGroupExpression (ctx, (Gtk.Widget) Wrapped);
 
55
                                ctx.Statements.Add (
 
56
                                        new CodeAssignStatement (
 
57
                                                new CodePropertyReferenceExpression (var, "Group"),
 
58
                                                groupExp)
 
59
                                );
 
60
                        }
 
61
                        else
 
62
                                base.GeneratePropertySet (ctx, var, prop);
 
63
                }
 
64
 
 
65
                public string Group {
 
66
                        get {
 
67
                                return GroupManager[Wrapped];
 
68
                        }
 
69
                        set {
 
70
                                GroupManager[Wrapped] = value;
 
71
                                EmitNotify ("Group");
 
72
                        }
 
73
                }
 
74
        }
 
75
}