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())); }
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; }
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); }
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(); }
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(); }
public Project EditFakeProject(IDatabase db, Project project, ITemplatesService ts) { CaptureSettings captureSettings = new CaptureSettings(); return NewProject(db, project, ProjectType.EditProject, ts, null, out captureSettings); }
void UpdateGameUnitsStats(Project project) { guStats = new GameUnitsStats(project.GameUnits, (int)project.Description.File.Length); }
private void EmitCloseOpenedProject(bool save) { if (CloseOpenedProjectEvent != null) CloseOpenedProjectEvent(save); openedProject = null; projectType = ProjectType.None; ResetGUI(); }
public bool Equals(Project project) { if(project == null) return false; else return UUID == project.UUID; }
public static void Export(Project project, string file) { file = Path.ChangeExtension(file, Constants.PROJECT_EXT); SerializableObject.Save(project, file); }
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; }
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); } } } } }
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; }
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); } }
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(); }
/* 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(); }
public void UpdateProject(Project project) { project.Description.LastModified = DateTime.Now; AddProject(project); }
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()); }
public bool Exists(Project project) { return File.Exists(Path.Combine(desc_path, project.UUID.ToString())) && File.Exists(Path.Combine(project_path, project.UUID.ToString())); }
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; }
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; }
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); } } }