Ejemplo n.º 1
0
    public void Load()
    {
        lineMaterial = new Material(Shader.Find("Sprites/Default"));

        var stream = CharStreams.fromPath(filePath);
        var lexer  = new GravisLexer(stream);
        var tokens = new CommonTokenStream(lexer);
        var parser = new GravisParser(tokens)
        {
            BuildParseTree = true
        };
        var loader = new LoadListener();
        var tree   = parser.file_input();

        ParseTreeWalker.Default.Walk(loader, tree);

        RelinkSubspaces(loader.subspaces, loader.nodes);

        var volume = new Volume();
        var parts  = Node.FindIsolatedGraphs(loader.nodes);

        for (var i = 0; i < parts.Count; i++)
        {
            var nodes = parts[i];
            Node.AlignNodesByForceDirected(nodes);
            DrawNodes(nodes, i, volume);
        }

        var orbit = Camera.main.GetComponent <DragMouseOrbit>();

        orbit.target   = volume.GetCenter();
        orbit.distance = volume.GetRadius() * 2;
    }
Ejemplo n.º 2
0
        public async Task Load(List <string> files, LoadListener listener, CancellationToken cancelToken)
        {
            this.listener    = listener;
            this.cancelToken = cancelToken;
            lock (songs)
            {
                songs.Clear();
            }

            try
            {
                await Task.Run(() =>
                {
                    splits = 0;
                    listener.NotifyLoadInitiated(files.Count);
                    SplitAndLoad(files);
                }, cancelToken);
            }
            catch (Exception e)
            {
                Messenger.Log("Canceled!");
            }

            lock (songs)
            {
                Messenger.Log("Collected songs: " + songs.Count);
                listener.NotifyCompleted(songs);
            }
        }
Ejemplo n.º 3
0
 public List <string> Load(string path, LoadListener listener)
 {
     Path          = path;
     this.listener = listener;
     Initiate();
     return(new List <string>());
 }
Ejemplo n.º 4
0
 public Task Load(List <string> files, LoadListener listener1, CancellationToken cancelToken)
 {
     return(Task.Run(() =>
     {
         listener1.NotifyProgress(1);
         listener1.NotifyCompleted(Songs);
     }, cancelToken));
 }
Ejemplo n.º 5
0
        public List <string> Load(string path, LoadListener listener)
        {
            listener.NotifyNewLoad();
            Messenger.PostMessage("Counting files, please be patient", Messenger.TargetType.Frontend);
            var list = fileCollector.CollectFileNamesSync(path);

            Messenger.PostMessage("Now adding " + list.Count + " files to library. Please be patient.",
                                  Messenger.TargetType.Frontend);
            return(list);
        }
Ejemplo n.º 6
0
        public Task <List <string> > LoadAsync(string path, LoadListener listener)
        {
            var task = Task.Run(() =>
            {
                Path          = path;
                this.listener = listener;
                Initiate();
                listener.NotifyProgress(1);
                var list1 = list.Select((e) => e.Name).ToList();
                return(list1);
            });

            task.Wait();
            return(task);
        }
Ejemplo n.º 7
0
        public void DeleteSongs(IList <Song> songs, LoadListener progressTracker)
        {
            progressTracker.NotifyNewLoad();
            progressTracker.NotifyLoadInitiated(songs.Count);

            foreach (var s in songs)
            {
                library.RemoveById(s.ID);
                Messenger.Post("Deleted song: " + s.Name);
                progressTracker.NotifyProgress(1);
            }

            progressTracker.NotifyCompleted(songs);
            library.InitialiseParts();
            NotifyUpdated();
        }
Ejemplo n.º 8
0
        public void DeleteAlbum(string album, LoadListener listener)
        {
            var songsToDelete = library.GetSongsByAlbum(album);

            listener.NotifyNewLoad();
            listener.NotifyLoadInitiated(songsToDelete.Count);
            foreach (var song in songsToDelete)
            {
                library.RemoveById(song.ID);
                listener.NotifyProgress(1);
            }

            library.InitialiseParts();
            listener.NotifyCompleted(new List <Song>());
            NotifyUpdated();
        }
Ejemplo n.º 9
0
        public void DeleteArtist(string artist, LoadListener progressTracker)
        {
            var songs = library.GetSongsByArtist(artist);

            progressTracker.NotifyNewLoad();
            progressTracker.NotifyLoadInitiated(songs.Count + 1);
            foreach (var song in songs)
            {
                library.RemoveById(song.ID);
                progressTracker.NotifyProgress(1);
            }

            library.InitialiseParts();
            progressTracker.NotifyProgress(1);
            progressTracker.NotifyCompleted(new List <Song>());
            NotifyUpdated();
        }
Ejemplo n.º 10
0
        public Task StartNewLoad(LoadListener listener, CancellationToken cancelToken)
        {
            Messenger.Log("Starting new Async load");
            if (engine != null)
            {
                if (songCollector == null)
                {
                    songCollector = new SongCollector(listener, tagReaderFactory);
                }

                return(Task.Run(async() =>
                {
                    var list = await engine.LoadAsync(Path, listener);
                    await songCollector.Load(list, listener, cancelToken);
                    Messenger.Log("Done loading, " + list.Count);
                }));
            }

            Messenger.Log("No engine?");
            return(null);
        }
Ejemplo n.º 11
0
        private IList <Song> LoadFromXml(LoadListener listener)
        {
            if (!File.Exists(filename))
            {
                throw new Exception(filename + " not found!");
            }

            listener.NotifyNewLoad();

            List <PersistedSong> songs = null;

            using (var reader = XmlReader.Create(filename))
            {
                songs = new List <PersistedSong>((PersistedSong[])serializerInstance.Deserialize(reader));
            }

            Messenger.Post("Library reloaded from " + filename);
            var convertedSongs = new SongConverter().ConvertPersistedSongs(songs);

            Messenger.Log("Persisted songs converted");
            listener.NotifyLoadInitiated(convertedSongs.Count);
            listener.NotifyCompleted(convertedSongs);
            return(convertedSongs);
        }
Ejemplo n.º 12
0
 public async Task <List <string> > LoadAsync(string path, LoadListener listener)
 {
     return(await Task.Run <List <string> >(() => Load(path, listener)));
 }
Ejemplo n.º 13
0
 public Task StartNewLoad(LoadListener listener, CancellationToken cancelToken)
 {
     return(Task.Run(() => LoadFromXml(listener)));
 }
Ejemplo n.º 14
0
        public Task LoadSongs(IAsyncSongLoader loader, LoadListener listener, CancellationToken cancelToken)
        {
            attachedListener = listener != this ? listener : null;

            return(loader.StartNewLoad(this, cancelToken));
        }
Ejemplo n.º 15
0
 public Task LoadSongs(IAsyncSongLoader loader, LoadListener listener)
 {
     listener.Completed += Listener_Completed;
     return(LoadSongs(loader, listener, CancellationToken.None));
 }
Ejemplo n.º 16
0
 public SongCollector(LoadListener listener, TagReaderFactory tagReaderFactory)
 {
     this.listener         = listener;
     this.tagReaderFactory = tagReaderFactory;
     songs = new List <Song>();
 }