public PlaylistGridViewColumn Create(PlaylistColumn column)
        {
            var gridViewColumn = new PlaylistGridViewColumn(column);

            switch (column.Type)
            {
            case PlaylistColumnType.Script:
                if (!string.IsNullOrEmpty(column.Script))
                {
                    gridViewColumn.DisplayMemberBinding = new PlaylistScriptBinding()
                    {
                        ScriptingContext = this.ScriptingContext.Value,
                        Script           = column.Script
                    };
                }
                break;

            case PlaylistColumnType.Plugin:
                if (!string.IsNullOrEmpty(column.Plugin))
                {
                    var provider = PlaylistColumnProviderManager.GetProvider(column.Plugin);
                    if (provider != null)
                    {
                        gridViewColumn.CellTemplate = provider.CellTemplate;
                    }
                }
                break;

            case PlaylistColumnType.Tag:
                if (!string.IsNullOrEmpty(column.Tag))
                {
                    gridViewColumn.DisplayMemberBinding = new PlaylistMetaDataBinding()
                    {
                        Name   = column.Tag,
                        Format = column.Format
                    };
                }
                break;
            }
            BindingHelper.Create(
                gridViewColumn,
                GridViewColumn.WidthProperty,
                typeof(GridViewColumn),
                column,
                "Width",
                ColumnWidthConverter.Instance,
                (sender, e) => this.OnWidthChanged(column)
                );
            BindingHelper.Create(
                gridViewColumn,
                GridViewColumnExtensions.PositionProperty,
                typeof(GridViewColumn),
                column,
                "Sequence",
                (sender, e) => this.OnPositionChanged(column)
                );
            return(gridViewColumn);
        }
 public void Resize(PlaylistGridViewColumn column)
 {
     this.Suspended = true;
     try
     {
         if (double.IsNaN(column.Width))
         {
             column.Width = column.ActualWidth;
             column.Width = double.NaN;
         }
     }
     finally
     {
         this.Suspended = false;
     }
 }
예제 #3
0
        public bool ShouldRefreshColumn(PlaylistGridViewColumn column, IEnumerable <string> names)
        {
            if (names == null || !names.Any())
            {
                return(true);
            }
            switch (column.PlaylistColumn.Type)
            {
            case PlaylistColumnType.Script:
                return(names.Any(name => column.PlaylistColumn.Script.Contains(name, true)));

            case PlaylistColumnType.Plugin:
                var provider = PlaylistColumnProviderManager.GetProvider(column.PlaylistColumn.Plugin);
                if (provider != null)
                {
                    return(names.Any(name => provider.MetaData.Contains(name, StringComparer.OrdinalIgnoreCase)));
                }
                break;
            }
            return(true);
        }
예제 #4
0
 public void Refresh(PlaylistGridViewColumn column)
 {
     column.Refresh();
 }
        public PlaylistGridViewColumn Create(PlaylistColumn column)
        {
            var gridViewColumn = new PlaylistGridViewColumn(column);

            switch (column.Type)
            {
            case PlaylistColumnType.Script:
                if (!string.IsNullOrEmpty(column.Script))
                {
                    gridViewColumn.DisplayMemberBinding = new PlaylistScriptBinding()
                    {
                        ScriptingContext = this.ScriptingContext.Value,
                        Script           = column.Script
                    };
                }
                break;

            case PlaylistColumnType.Plugin:
                if (!string.IsNullOrEmpty(column.Plugin))
                {
                    var provider = PlaylistColumnProviderManager.GetProvider(column.Plugin) as IUIPlaylistColumnProvider;
                    if (provider == null)
                    {
                        Logger.Write(this, LogLevel.Warn, "Playlist column plugin \"{0}\" was not found, has it been uninstalled?", column.Plugin);
                    }
                    else
                    {
                        gridViewColumn.CellTemplate = provider.CellTemplate;
                    }
                }
                break;

            case PlaylistColumnType.Tag:
                if (!string.IsNullOrEmpty(column.Tag))
                {
                    gridViewColumn.DisplayMemberBinding = new PlaylistMetaDataBinding()
                    {
                        Name   = column.Tag,
                        Format = column.Format
                    };
                }
                break;
            }
            BindingHelper.Create(
                gridViewColumn,
                GridViewColumn.WidthProperty,
                typeof(GridViewColumn),
                column,
                "Width",
                ColumnWidthConverter.Instance,
                (sender, e) =>
            {
                if (IsAutoSizing(gridViewColumn))
                {
                    //Don't raise events while auto sizing is in progress.
                    return;
                }
                this.OnWidthChanged(column);
            }
                );
            BindingHelper.Create(
                gridViewColumn,
                GridViewColumnExtensions.PositionProperty,
                typeof(GridViewColumn),
                column,
                "Sequence",
                (sender, e) => this.OnPositionChanged(column)
                );
            return(gridViewColumn);
        }