Ejemplo n.º 1
0
 internal Group DeserialiseGroup(group grp, int id)
 {
     if (grp == null)
         return null;
     var ret = new Group
     {
         Id = (byte)id,
         Name = grp.name,
         Background = grp.background == null ? null : Path.Combine(directory, grp.background),
         BackgroundStyle = grp.backgroundStyle.ToString(),
         Collapsed = bool.Parse(grp.collapsed.ToString()),
         Height = Int32.Parse(grp.height),
         Width = Int32.Parse(grp.width),
         Icon = grp.icon == null ? null : Path.Combine(directory, grp.icon),
         Ordered = bool.Parse(grp.ordered.ToString()),
         Shortcut = grp.shortcut,
         MoveTo = bool.Parse(grp.moveto.ToString()),
         CardActions = new List<IGroupAction>(),
         GroupActions = new List<IGroupAction>()
     };
     if (ret.Width == 0)
     {
         ret.Width = 1;
     }
     if (ret.Height == 0)
     {
         ret.Height = 1;
     }
     if (grp.Items != null)
     {
         foreach (var item in grp.Items)
         {
             if (item is action)
             {
                 var i = item as action;
                 var to = new GroupAction
                              {
                                  Name = i.menu,
                                  Shortcut = i.shortcut,
                                  ShowIf = i.showIf,
                                  BatchExecute = i.batchExecute,
                                  Execute = i.execute,
                                  DefaultAction = bool.Parse([email protected]())
                              };
                 if (item is cardAction)
                 {
                     to.IsGroup = false;
                     (ret.CardActions as List<IGroupAction>).Add(to);
                 }
                 else if (item is groupAction)
                 {
                     to.IsGroup = true;
                     (ret.GroupActions as List<IGroupAction>).Add(to);
                 }
             }
             else if (item is actionSubmenu)
             {
                 var i = item as actionSubmenu;
                 var to = new GroupActionGroup
                 {
                     Children = new List<IGroupAction>(),
                     Name = i.menu,
                     ShowIf = i.showIf,
                 };
                 if (item is cardActionSubmenu)
                 {
                     to.IsGroup = false;
                     to.Children = this.DeserializeGroupActionGroup(i, false);
                     (ret.CardActions as List<IGroupAction>).Add(to);
                 }
                 else if (item is groupActionSubmenu)
                 {
                     to.IsGroup = true;
                     to.Children = this.DeserializeGroupActionGroup(i, true);
                     (ret.GroupActions as List<IGroupAction>).Add(to);
                 }
             }
             else if (item is actionSeparator)
             {
                 var separator = new GroupActionSeparator {
                     ShowIf = item.showIf,
                 };
                 if (item is groupActionSeparator)
                 {
                     separator.IsGroup = true;
                     (ret.GroupActions as List<IGroupAction>).Add(separator);
                 }
                 else if (item is cardActionSeparator)
                 {
                     separator.IsGroup = false;
                     (ret.CardActions as List<IGroupAction>).Add(separator);
                 }
             }
         }
     }
     switch (grp.visibility)
     {
         case groupVisibility.none:
             ret.Visibility = GroupVisibility.Nobody;
             break;
         case groupVisibility.me:
             ret.Visibility = GroupVisibility.Owner;
             break;
         case groupVisibility.all:
             ret.Visibility = GroupVisibility.Everybody;
             break;
         case groupVisibility.undefined:
             ret.Visibility = GroupVisibility.Undefined;
             break;
         default:
             throw new ArgumentOutOfRangeException();
     }
     return ret;
 }
Ejemplo n.º 2
0
 internal IEnumerable<IGroupAction> DeserializeGroupActionGroup(actionSubmenu actiongroup, bool isGroup)
 {
     var ret = new List<IGroupAction>();
     foreach (var item in actiongroup.Items)
     {
         if (item is action)
         {
             var i = item as action;
             var add = new GroupAction
             {
                 Name = i.menu,
                 Shortcut = i.shortcut,
                 Execute = i.execute,
                 BatchExecute = i.batchExecute,
                 ShowExecute = i.showIf,
                 HeaderExecute = i.getName,
                 DefaultAction = bool.Parse([email protected]())
             };
             add.IsGroup = isGroup;
             ret.Add(add);
         }
         if (item is actionSubmenu)
         {
             var i = item as actionSubmenu;
             var addgroup = new GroupActionGroup
             {
                 Children = new List<IGroupAction>(),
                 Name = i.menu,
                 IsGroup = isGroup,
                 ShowExecute = i.showIf,
                 HeaderExecute = i.getName
             };
             addgroup.Children = this.DeserializeGroupActionGroup(i, isGroup);
             ret.Add(addgroup);
         }
         if (item is actionSeparator)
         {
             var i = item as actionSeparator;
             var add = new GroupActionSeparator();
             add.IsGroup = isGroup;
             add.ShowExecute = i.showIf;
             ret.Add(add);
         }
     }
     return ret;
 }