Inheritance: IComparable
示例#1
0
        public void AddProject(Project project)
        {
            string path = Path.Combine(project_path, project.UUID.ToString());

            project.Description.LastModified = DateTime.Now;
            if (File.Exists(path))
                File.Delete(path);
            SerializableObject.Save(project, path);
            SerializableObject.Save(project.Description, Path.Combine(desc_path, project.UUID.ToString()));
        }
示例#2
0
 public ProjectsManager(Project openedProject, IDatabase DB, ITemplatesService ts)
 {
     this.Build();
     this.openedProject = openedProject;
     this.projectdetails.Use = ProjectType.EditProject;
     this.DB = DB;
     Fill();
     projectdetails.Edited = false;
     projectdetails.TemplatesService = ts;
 }
示例#3
0
        public ProjectStats(Project project)
        {
            catStats = new List<CategoryStats>();

            ProjectName = project.Description.Title;
            Date = project.Description.MatchDate;
            LocalTeam = project.LocalTeamTemplate.TeamName;
            VisitorTeam = project.VisitorTeamTemplate.TeamName;
            Competition = project.Description.Competition;
            Season = project.Description.Season;
            Results = String.Format("{0}-{1}", project.Description.LocalGoals, project.Description.VisitorGoals);
            UpdateStats (project);
            UpdateGameUnitsStats (project);
        }
示例#4
0
 public void OpenProjectsManager(Project openedProject, IDatabase db, ITemplatesService ts)
 {
     Gui.Dialog.ProjectsManager pm = new Gui.Dialog.ProjectsManager(openedProject, db, ts);
     pm.TransientFor = mainWindow as Gtk.Window;
     pm.Show();
 }
示例#5
0
        public void ExportFrameSeries(Project openedProject, Play play, string snapshotsDir)
        {
            SnapshotsDialog sd;
            uint interval;
            string seriesName;
            string outDir;

            sd= new SnapshotsDialog();
            sd.TransientFor= mainWindow as Gtk.Window;
            sd.Play = play.Name;

            if(sd.Run() == (int)ResponseType.Ok) {
                sd.Destroy();
                interval = sd.Interval;
                seriesName = sd.SeriesName;
                outDir = System.IO.Path.Combine(snapshotsDir, seriesName);
                var fsc = new FramesSeriesCapturer(openedProject.Description.File.FilePath,
                                               play.Start.MSeconds, play.Stop.MSeconds,
                                               interval, outDir);
                var fcpd = new FramesCaptureProgressDialog(fsc);
                fcpd.TransientFor = mainWindow as Gtk.Window;
                fcpd.Run();
                fcpd.Destroy();
            }
            else
                sd.Destroy();
        }
示例#6
0
 public Project EditFakeProject(IDatabase db, Project project, ITemplatesService ts)
 {
     CaptureSettings captureSettings = new CaptureSettings();
     return NewProject(db, project, ProjectType.EditProject, ts, null, out captureSettings);
 }
示例#7
0
 void UpdateGameUnitsStats(Project project)
 {
     guStats = new GameUnitsStats(project.GameUnits, (int)project.Description.File.Length);
 }
示例#8
0
 private void EmitCloseOpenedProject(bool save)
 {
     if (CloseOpenedProjectEvent != null)
         CloseOpenedProjectEvent(save);
     openedProject = null;
     projectType = ProjectType.None;
     ResetGUI();
 }
示例#9
0
 public bool Equals(Project project)
 {
     if(project == null)
         return false;
     else
         return UUID == project.UUID;
 }
示例#10
0
 public static void Export(Project project, string file)
 {
     file = Path.ChangeExtension(file, Constants.PROJECT_EXT);
     SerializableObject.Save(project, file);
 }
示例#11
0
 public static void Export(Project project, string file)
 {
     file = Path.ChangeExtension(file,"lpr");
     SerializableObject.Save(project, file);
 }
        private TreeStore GetModel(Project project)
        {
            Dictionary<Category, TreeIter> itersDic = new Dictionary<Category, TreeIter>();
            Gtk.TreeStore dataFileListStore = new Gtk.TreeStore(typeof(Play));

            foreach(Category cat in project.Categories) {
                Gtk.TreeIter iter = dataFileListStore.AppendValues(cat);
                itersDic.Add(cat, iter);
            }

            var queryPlaysByCategory = project.PlaysGroupedByCategory;
            foreach(var playsGroup in queryPlaysByCategory) {
                Category cat = playsGroup.Key;
                if(!itersDic.ContainsKey(cat))
                    continue;
                foreach(Play play in playsGroup) {
                    dataFileListStore.AppendValues(itersDic[cat],play);
                }
            }
            return dataFileListStore;
        }
示例#13
0
        void UpdateStats(Project project)
        {
            catStats.Clear();

            foreach (Category cat in project.Categories) {
                CategoryStats stats;
                List<Play> plays;
                int localTeamCount, visitorTeamCount;

                plays = project.PlaysInCategory (cat);
                CountPlaysInTeam(plays, out localTeamCount, out visitorTeamCount);
                stats = new CategoryStats(cat.Name, plays.Count, localTeamCount, visitorTeamCount);
                catStats.Add (stats);

                foreach (ISubCategory subcat in cat.SubCategories) {
                    SubCategoryStat subcatStat;

                    if (subcat is PlayerSubCategory)
                        continue;

                    subcatStat = new SubCategoryStat(subcat.Name);
                    stats.AddSubcatStat(subcatStat);

                     if (subcat is TagSubCategory) {
                        foreach (string option in subcat.ElementsDesc()) {
                            List<Play> subcatPlays;
                            StringTag tag;

                            tag = new StringTag{SubCategory=subcat, Value=option};
                            subcatPlays = plays.Where(p => p.Tags.Tags.Contains(tag)).ToList();
                            GetSubcategoryStats(subcatPlays, subcatStat, option,
                                stats.TotalCount, out localTeamCount, out visitorTeamCount);
                            GetPlayersStats(project, subcatPlays, option, subcatStat, cat);
                        }
                     }

                     if (subcat is TeamSubCategory) {
                        List<Team> teams = new List<Team>();
                        teams.Add(Team.LOCAL);
                        teams.Add(Team.VISITOR);

                        foreach (Team team in teams) {
                            List<Play> subcatPlays;
                            TeamTag tag;

                            tag = new TeamTag{SubCategory=subcat, Value=team};
                            subcatPlays = plays.Where(p => p.Teams.Tags.Contains(tag)).ToList();
                            GetSubcategoryStats(subcatPlays, subcatStat, team.ToString(),
                                stats.TotalCount, out localTeamCount, out visitorTeamCount);
                        }
                     }
                }
            }
        }
示例#14
0
        Project NewProject(IDatabase db, Project project, ProjectType type,
			ITemplatesService tps, List<LongoMatch.Common.Device> devices, out CaptureSettings captureSettings)
        {
            NewProjectDialog npd = new NewProjectDialog();

            npd.TransientFor = mainWindow as Gtk.Window;
            npd.Use = type;
            npd.TemplatesService = tps;
            npd.Project = project;
            if(type == ProjectType.CaptureProject)
                npd.Devices = devices;
            int response = npd.Run();
            while(true) {
                if(response != (int)ResponseType.Ok) {
                    break;
                } else if(npd.Project == null) {
                    InfoMessage(Catalog.GetString("Please, select a video file."));
                    response=npd.Run();
                } else {
                    project = npd.Project;
                    break;
                }
            }
            if (type == ProjectType.CaptureProject)
                captureSettings = npd.CaptureSettings;
            else
                captureSettings = new CaptureSettings();
            npd.Destroy();
            return project;
        }
示例#15
0
        protected virtual void SaveProject(Project project, ProjectType projectType)
        {
            Log.Debug(String.Format("Saving project {0} type: {1}", project, projectType));
            if (project == null)
                return;

            if(projectType == ProjectType.FileProject) {
                try {
                    Core.DB.UpdateProject(project);
                } catch(Exception e) {
                    Log.Exception(e);
                }
            } else if (projectType == ProjectType.FakeCaptureProject) {
                try {
                    Core.DB.AddProject(project);
                } catch (Exception e) {
                    Log.Exception(e);
                }
            } else if (projectType == ProjectType.CaptureProject) {
                SaveCaptureProject(project);
            }
        }
示例#16
0
        public void SetProject(Project project, ProjectType projectType, CaptureSettings props)
        {
            bool isLive = false;

            /* Update tabs labels */
            var desc = project.Description;
            visitorteamlabel.Text = project.VisitorTeamTemplate.TeamName;
            localteamlabel.Text = project.LocalTeamTemplate.TeamName;

            ExportProjectAction1.Sensitive = true;

            if(projectType == ProjectType.FileProject) {
                Title = System.IO.Path.GetFileNameWithoutExtension(desc.File.FilePath) +
                        " - " + Constants.SOFTWARE_NAME;
                player.LogoMode = false;
                timeline.Project = project;
                guTimeline.Project = project;

            } else {
                Title = Constants.SOFTWARE_NAME;
                isLive = true;
                if(projectType == ProjectType.FakeCaptureProject)
                    capturer.Type = CapturerType.Fake;
                player.Visible = false;
                capturer.Visible = true;
                TaggingViewAction.Active = true;
            }

            openedProject = project;
            this.projectType = projectType;

            playsList.ProjectIsLive = isLive;
            localPlayersList.ProjectIsLive = isLive;
            visitorPlayersList.ProjectIsLive = isLive;
            tagsList.ProjectIsLive = isLive;
            playsList.Project=project;
            tagsList.Project = project;
            visitorPlayersList.Project = project;
            localPlayersList.Project = project;
            UpdateTeamsModels();
            buttonswidget.Categories = project.Categories;
            MakeActionsSensitive(true,projectType);
            ShowWidgets();
        }
示例#17
0
        /*
        public static void ExportToCSV(Project project) {
            FileChooserDialog fChooser;
            FileFilter filter;
            string outputFile;
            CSVExport export;

            fChooser = new FileChooserDialog(Catalog.GetString("Select Export File"),
                                             window,
                                             FileChooserAction.Save,
                                             "gtk-cancel",ResponseType.Cancel,
                                             "gtk-save",ResponseType.Accept);
            fChooser.SetCurrentFolder(MainClass.HomeDir());
            fChooser.DoOverwriteConfirmation = true;
            filter = new FileFilter();
            filter.Name = "CSV File";
            filter.AddPattern("*.csv");
            fChooser.AddFilter(filter);
            if(fChooser.Run() == (int)ResponseType.Accept) {
                outputFile=fChooser.Filename;
                outputFile = System.IO.Path.ChangeExtension(outputFile,"csv");
                export = new CSVExport(project, outputFile);
                export.WriteToFile();
            }
            fChooser.Destroy();
        }*/
        private void CreateThumbnails(Project project)
        {
            IFramesCapturer capturer;
            IBusyDialog dialog;

            dialog = guiToolkit.BusyDialog(Catalog.GetString("Creating video thumbnails. This can take a while."));
            dialog.Show();
            dialog.Pulse();

            /* Create all the thumbnails */
            capturer = multimediaToolkit.GetFramesCapturer();
            capturer.Open(project.Description.File.FilePath);
            foreach(Play play in project.AllPlays()) {
                try {
                    capturer.SeekTime(play.Start.MSeconds + ((play.Stop - play.Start).MSeconds/2),
                                      true);
                    play.Miniature = capturer.GetCurrentFrame(Constants.THUMBNAIL_MAX_WIDTH,
                                     Constants.THUMBNAIL_MAX_HEIGHT);
                    dialog.Pulse();

                } catch (Exception ex) {
                    Log.Exception(ex);
                }
            }
            capturer.Dispose();
            dialog.Destroy();
        }
示例#18
0
 public void UpdateProject(Project project)
 {
     project.Description.LastModified = DateTime.Now;
     AddProject(project);
 }
示例#19
0
        private void SaveCaptureProject(Project project)
        {
            string filePath = project.Description.File.FilePath;

            Log.Debug ("Saving capture project: " + project);

            /* FIXME: Show message */
            //guiToolkit.InfoMessage(Catalog.GetString("Loading newly created project..."));

            /* scan the new file to build a new PreviewMediaFile with all the metadata */
            try {
                Log.Debug("Reloading saved file: " + filePath);
                project.Description.File = multimediaToolkit.DiscoverFile(filePath);
                Core.DB.AddProject(project);
            } catch(Exception ex) {
                Log.Exception(ex);
                Log.Debug ("Backing up project to file");
                string projectFile = filePath + "-" + DateTime.Now;
                projectFile = projectFile.Replace("-", "_").Replace(" ", "_").Replace(":", "_");
                Project.Export(OpenedProject, projectFile);
                guiToolkit.ErrorMessage(Catalog.GetString("An error occured saving the project:\n")+ex.Message+ "\n\n"+
                    Catalog.GetString("The video file and a backup of the project has been "+
                    "saved. Try to import it later:\n")+
                    filePath+"\n"+projectFile);
            }
            /* we need to set the opened project to null to avoid calling again CloseOpendProject() */
            /* FIXME: */
            //project = null;
            SetProject(project, ProjectType.FileProject, new CaptureSettings());
        }
示例#20
0
 public bool Exists(Project project)
 {
     return File.Exists(Path.Combine(desc_path, project.UUID.ToString())) &&
         File.Exists(Path.Combine(project_path, project.UUID.ToString()));
 }
示例#21
0
        private bool SetProject(Project project, ProjectType projectType, CaptureSettings props)
        {
            if(OpenedProject != null)
                CloseOpenedProject(true);

            if(projectType == ProjectType.FileProject) {
                // Check if the file associated to the project exists
                if(!File.Exists(project.Description.File.FilePath)) {
                    guiToolkit.WarningMessage(Catalog.GetString("The file associated to this project doesn't exist.") + "\n"
                        + Catalog.GetString("If the location of the file has changed try to edit it with the database manager."));
                    CloseOpenedProject(true);
                    return false;
                }
                try {
                    Player.Open(project.Description.File.FilePath);
                }
                catch(Exception ex) {
                    guiToolkit.ErrorMessage(Catalog.GetString("An error occurred opening this project:") + "\n" + ex.Message);
                    CloseOpenedProject(true);
                    return false;
                }

            } else {
                if(projectType == ProjectType.CaptureProject) {
                    Capturer.CaptureProperties = props;
                    try {
                        Capturer.Type = CapturerType.Live;
                    } catch(Exception ex) {
                        guiToolkit.ErrorMessage(ex.Message);
                        CloseOpenedProject(false);
                        return false;
                    }
                } else
                    Capturer.Type = CapturerType.Fake;
                Capturer.Run();
            }

            OpenedProject = project;
            OpenedProjectType = projectType;
            mainWindow.SetProject(project, projectType, props);
            EmitProjectChanged();
            return true;
        }
示例#22
0
        private static void OnOpenedProjectChanged(Project project, ProjectType projectType)
        {
            if (project != null) {
                hkManager.Categories=project.Categories;
            } else {
                hkManager.Categories=null;
            }

            eManager.OpenedProject = project;
            eManager.OpenedProjectType = projectType;

            guManager.OpenedProject = project;
            plManager.OpenedProject = project;
        }
示例#23
0
        void GetPlayersStats(Project project, List<Play> subcatPlays, string optionName,
			SubCategoryStat subcatStat, Category cat)
        {
            foreach (ISubCategory subcat in cat.SubCategories) {
                PlayerSubCategory playerSubcat;
                Dictionary<Player, int> localPlayerCount = new Dictionary<Player, int>();
                Dictionary<Player, int> visitorPlayerCount = new Dictionary<Player, int>();

                if (!(subcat is PlayerSubCategory))
                    continue;

                playerSubcat = subcat as PlayerSubCategory;

                if (playerSubcat.Contains(Team.LOCAL) || playerSubcat.Contains(Team.BOTH)){
                    foreach (Player player in project.LocalTeamTemplate) {
                        localPlayerCount.Add(player, GetPlayerCount(subcatPlays, player, subcat as PlayerSubCategory));
                    }
                    subcatStat.AddPlayersStats(optionName, subcat.Name, Team.LOCAL, localPlayerCount);
                }

                if (playerSubcat.Contains(Team.VISITOR) || playerSubcat.Contains(Team.BOTH)){
                    foreach (Player player in project.VisitorTeamTemplate) {
                        visitorPlayerCount.Add(player, GetPlayerCount(subcatPlays, player, subcat as PlayerSubCategory));
                    }
                    subcatStat.AddPlayersStats(optionName, subcat.Name, Team.VISITOR, visitorPlayerCount);
                }
            }
        }