[longomatch] Start with the new UI redesign
- From: Andoni Morales Alastruey <amorales src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [longomatch] Start with the new UI redesign
- Date: Mon, 7 Jul 2014 11:18:43 +0000 (UTC)
commit 713baa16ae49154f735a8a88a42bd67de867226b
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date: Tue Feb 11 19:52:37 2014 +0100
Start with the new UI redesign
LongoMatch.Core/Common/Constants.cs | 1 +
LongoMatch.Core/Handlers/Handlers.cs | 5 +
LongoMatch.Core/Interfaces/GUI/IGUIToolkit.cs | 15 +-
LongoMatch.Core/Interfaces/GUI/IMainController.cs | 2 +
.../Interfaces/Multimedia/IMultimediaToolkit.cs | 4 +
LongoMatch.Core/LongoMatch.Core.mdp | 1 +
LongoMatch.Core/Utils.cs | 70 +
LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs | 2 +-
LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs | 4 +-
LongoMatch.GUI.Multimedia/Gui/Utils/Remuxer.cs | 2 +-
.../LongoMatch.GUI.Multimedia.mdp | 1 +
LongoMatch.GUI.Multimedia/MultimediaToolkit.cs | 40 +
LongoMatch.GUI/Gui/Component/BackgroundWidget.cs | 79 ++
LongoMatch.GUI/Gui/Component/ProjectListWidget.cs | 170 ++--
.../Gui/Component/TeamPlayersSelection.cs | 126 ++
LongoMatch.GUI/Gui/GUIToolkit.cs | 111 +--
LongoMatch.GUI/Gui/MainWindow.cs | 127 ++-
LongoMatch.GUI/Gui/Panel/NewProjectPanel.cs | 346 +++++
LongoMatch.GUI/Gui/Panel/OpenProjectPanel.cs | 61 +
LongoMatch.GUI/Gui/Panel/WelcomePanel.cs | 44 +
LongoMatch.GUI/LongoMatch.GUI.mdp | 15 +-
.../LongoMatch.Gui.Component.BackgroundWidget.cs | 25 +
.../LongoMatch.Gui.Component.DrawingToolBox.cs | 1 +
...ongoMatch.Gui.Component.ProjectDetailsWidget.cs | 1 +
.../LongoMatch.Gui.Component.ProjectListWidget.cs | 10 +-
.../LongoMatch.Gui.Component.Stats.Plotter.cs | 1 +
...ongoMatch.Gui.Component.TeamPlayersSelection.cs | 76 +
.../gtk-gui/LongoMatch.Gui.Dialog.BusyDialog.cs | 3 +-
...LongoMatch.Gui.Dialog.ProjectSelectionDialog.cs | 1 -
.../gtk-gui/LongoMatch.Gui.MainWindow.cs | 28 +-
.../LongoMatch.Gui.Panel.NewProjectPanel.cs | 839 ++++++++++++
.../LongoMatch.Gui.Panel.OpenProjectPanel.cs | 70 +
.../gtk-gui/LongoMatch.Gui.Panel.WelcomePanel.cs | 264 ++++
LongoMatch.GUI/gtk-gui/generated.cs | 4 -
LongoMatch.GUI/gtk-gui/gui.stetic | 1441 +++++++++++++++++++-
LongoMatch.GUI/gtk-gui/objects.xml | 31 +
LongoMatch.Multimedia/LongoMatch.Multimedia.mdp | 2 +-
.../{ => Utils}/MultimediaFactory.cs | 7 +-
LongoMatch.Services/LongoMatch.Services.mdp | 2 +
LongoMatch.Services/Services/ProjectsManager.cs | 50 +-
LongoMatch/LongoMatchGtk.mdp | 1 +
LongoMatch/Main.cs | 2 +-
42 files changed, 3789 insertions(+), 296 deletions(-)
---
diff --git a/LongoMatch.Core/Common/Constants.cs b/LongoMatch.Core/Common/Constants.cs
index 73e32be..ada0bc8 100644
--- a/LongoMatch.Core/Common/Constants.cs
+++ b/LongoMatch.Core/Common/Constants.cs
@@ -100,6 +100,7 @@ Xavier Queralt Mateu (ca)";
public const string PLAYLIST_EXT = ".lpl";
public const string PROJECT_EXT = ".lgm";
+ public const string BACKGROUND = "background.png";
public const string FIELD_BACKGROUND = "field_background.svg";
public const string HALF_FIELD_BACKGROUND = "half_field_background.svg";
public const string GOAL_BACKGROUND = "goal_background.svg";
diff --git a/LongoMatch.Core/Handlers/Handlers.cs b/LongoMatch.Core/Handlers/Handlers.cs
index bc79da7..00cc880 100644
--- a/LongoMatch.Core/Handlers/Handlers.cs
+++ b/LongoMatch.Core/Handlers/Handlers.cs
@@ -56,9 +56,11 @@ namespace LongoMatch.Handlers
public delegate void SaveProjectHandler(Project project, ProjectType projectType);
public delegate void OpenedProjectChangedHandler(Project project, ProjectType projectType,
PlaysFilter filter,
IAnalysisWindow analysisWindow,
IProjectOptionsController projectOptions);
+ public delegate void OpenProjectIDHandler(Guid project_id);
public delegate void OpenProjectHandler();
public delegate void CloseOpenendProjectHandler();
public delegate void NewProjectHandler();
+ public delegate void OpenNewProjectHandler(Project project, ProjectType projectType, CaptureSettings
captureSettings);
public delegate void ImportProjectHandler(string name, string filterName, string filter,
Func <string, Project> importProjectFunc, bool
requiresNewFile);
public delegate void ExportProjectHandler();
@@ -131,6 +133,7 @@ namespace LongoMatch.Handlers
/* A list of projects have been selected */
public delegate void ProjectsSelectedHandler(List<ProjectDescription> projects);
+ public delegate void ProjectSelectedHandler(ProjectDescription project);
/* Start/Stop/Cancel game units */
public delegate void GameUnitHandler(GameUnit gameUnit, GameUnitEventType eType);
@@ -155,4 +158,6 @@ namespace LongoMatch.Handlers
public delegate void AnalysisWidgetsVisibilityHandler (bool visible);
public delegate void AnalysisModeChangedHandler (VideoAnalysisMode mode);
public delegate void TagSubcategoriesChangedHandler (bool tagsubcategories);
+
+ public delegate void BackEventHandle ();
}
diff --git a/LongoMatch.Core/Interfaces/GUI/IGUIToolkit.cs b/LongoMatch.Core/Interfaces/GUI/IGUIToolkit.cs
index 4f1f4eb..1853582 100644
--- a/LongoMatch.Core/Interfaces/GUI/IGUIToolkit.cs
+++ b/LongoMatch.Core/Interfaces/GUI/IGUIToolkit.cs
@@ -25,6 +25,7 @@ using LongoMatch.Store;
using LongoMatch.Store.Templates;
using Image = LongoMatch.Common.Image;
using LongoMatch.Stats;
+using LongoMatch.Interfaces.Multimedia;
namespace LongoMatch.Interfaces.GUI
{
@@ -52,7 +53,7 @@ namespace LongoMatch.Interfaces.GUI
string SelectFolder(string title, string defaultName, string defaultFolder,
string filterName, string[] extensionFilter);
- IBusyDialog BusyDialog(string message);
+ IBusyDialog BusyDialog(string message, object parent=null);
List<EditionJob> ConfigureRenderingJob (IPlayList playlist);
void ExportFrameSeries(Project openenedProject, Play play, string snapshotDir);
@@ -63,16 +64,10 @@ namespace LongoMatch.Interfaces.GUI
out IProjectOptionsController projectOptionsController);
void CloseProject ();
- ProjectDescription SelectProject(List<ProjectDescription> projects);
- ProjectType SelectNewProjectType();
+ void SelectProject(List<ProjectDescription> projects);
+
+ void CreateNewProject (ITemplatesService tps, IMultimediaToolkit toolit, Project
project=null);
- Project NewCaptureProject(IDatabase db, ITemplatesService ts,
- List<LongoMatch.Common.Device> devices, out CaptureSettings captureSettings);
- Project NewURICaptureProject(IDatabase db, ITemplatesService ts,
- out CaptureSettings captureSettings);
- Project NewFakeProject(IDatabase db, ITemplatesService ts);
- Project NewFileProject(IDatabase db, ITemplatesService ts);
- Project EditFakeProject(IDatabase db, Project project, ITemplatesService ts);
void ShowProjectStats(Project project);
void OpenProjectsManager(Project openedProject, IDatabase db, ITemplatesService ts);
diff --git a/LongoMatch.Core/Interfaces/GUI/IMainController.cs
b/LongoMatch.Core/Interfaces/GUI/IMainController.cs
index 84e8f46..aee3051 100644
--- a/LongoMatch.Core/Interfaces/GUI/IMainController.cs
+++ b/LongoMatch.Core/Interfaces/GUI/IMainController.cs
@@ -25,7 +25,9 @@ namespace LongoMatch.Interfaces.GUI
{
/* Projects */
event NewProjectHandler NewProjectEvent;
+ event OpenNewProjectHandler OpenNewProjectEvent;
event OpenProjectHandler OpenProjectEvent;
+ event OpenProjectIDHandler OpenProjectIDEvent;
event ImportProjectHandler ImportProjectEvent;
event ExportProjectHandler ExportProjectEvent;
event QuitApplicationHandler QuitApplicationEvent;
diff --git a/LongoMatch.Core/Interfaces/Multimedia/IMultimediaToolkit.cs
b/LongoMatch.Core/Interfaces/Multimedia/IMultimediaToolkit.cs
index 6849890..953515f 100644
--- a/LongoMatch.Core/Interfaces/Multimedia/IMultimediaToolkit.cs
+++ b/LongoMatch.Core/Interfaces/Multimedia/IMultimediaToolkit.cs
@@ -36,6 +36,10 @@ namespace LongoMatch.Interfaces.Multimedia
MediaFile DiscoverFile(string path);
List<Device> VideoDevices {get;}
+
+ bool FileNeedsRemux (MediaFile file);
+
+ string RemuxFile (MediaFile file, object parent);
}
}
diff --git a/LongoMatch.Core/LongoMatch.Core.mdp b/LongoMatch.Core/LongoMatch.Core.mdp
index 9ee404a..04cc4b0 100644
--- a/LongoMatch.Core/LongoMatch.Core.mdp
+++ b/LongoMatch.Core/LongoMatch.Core.mdp
@@ -112,6 +112,7 @@
<File subtype="Code" buildaction="EmbedAsResource" name="../images/field_background.svg" />
<File subtype="Code" buildaction="EmbedAsResource" name="../images/goal_background.svg" />
<File subtype="Code" buildaction="EmbedAsResource" name="../images/half_field_background.svg" />
+ <File subtype="Code" buildaction="Compile" name="Utils.cs" />
</Contents>
<References>
<ProjectReference type="Gac" localcopy="True" refto="System, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" />
diff --git a/LongoMatch.Core/Utils.cs b/LongoMatch.Core/Utils.cs
new file mode 100644
index 0000000..906abbe
--- /dev/null
+++ b/LongoMatch.Core/Utils.cs
@@ -0,0 +1,70 @@
+//
+// Copyright (C) 2014 Andoni Morales Alastruey
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+using System;
+using Mono.Unix;
+using LongoMatch.Interfaces.GUI;
+using LongoMatch.Interfaces.Multimedia;
+using LongoMatch.Store;
+
+namespace LongoMatch.Utils
+{
+ public class Open
+ {
+ public static MediaFile OpenFile (IGUIToolkit gui, IMultimediaToolkit multimedia, object
parent) {
+ IBusyDialog busy;
+ MediaFile mediaFile = null;
+ string folder, filename;
+
+
+ folder = System.Environment.GetFolderPath(Environment.SpecialFolder.Personal);
+ filename = gui.OpenFile (Catalog.GetString("Open file"), null, folder, null, null);
+ if (filename == null)
+ return null;
+
+ try {
+ busy = gui.BusyDialog (Catalog.GetString("Analyzing video
file:")+"\n"+filename,
+ parent);
+ busy.Show ();
+ mediaFile = multimedia.DiscoverFile (filename);
+ busy.Destroy ();
+
+ if(!mediaFile.HasVideo || mediaFile.VideoCodec == "")
+ throw new Exception(Catalog.GetString("This file doesn't contain a
video stream."));
+ if(mediaFile.HasVideo && mediaFile.Length == 0)
+ throw new Exception(Catalog.GetString("This file contains a video
stream but its length is 0."));
+ if (multimedia.FileNeedsRemux (mediaFile)) {
+ string q = Catalog.GetString("The file you are trying to load is not
properly supported. " +
+ "Would you like to convert it
into a more suitable format?");
+ if (gui.QuestionMessage (q, Catalog.GetString ("Convert"), null)) {
+ string newFilename = multimedia.RemuxFile (mediaFile, parent
as Gtk.Window);
+ if (newFilename != null)
+ mediaFile = multimedia.DiscoverFile (newFilename);
+ }
+ }
+ }
+ catch(Exception ex) {
+ gui.ErrorMessage (ex.Message, parent as Gtk.Window);
+ return null;
+ }
+
+ return mediaFile;
+ }
+
+ }
+}
+
diff --git a/LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs b/LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs
index 9572c43..dd0cb13 100644
--- a/LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs
@@ -63,7 +63,7 @@ namespace LongoMatch.Gui
/* Close any previous instance of the capturer */
Close();
- MultimediaFactory factory = new MultimediaFactory();
+ MultimediaToolkit factory = new MultimediaToolkit();
capturer = factory.GetCapturer(value);
capturer.EllapsedTime += OnTick;
if(value != CapturerType.Fake) {
diff --git a/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs b/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
index 2b06da2..eeae115 100644
--- a/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
@@ -413,10 +413,10 @@ namespace LongoMatch.Gui
}
private void PlayerInit() {
- MultimediaFactory factory;
+ MultimediaToolkit factory;
Widget playerWidget;
- factory= new MultimediaFactory();
+ factory= new MultimediaToolkit();
player = factory.GetPlayer(320,280);
tickHandler = new LongoMatch.Video.Common.TickHandler(OnTick);
diff --git a/LongoMatch.GUI.Multimedia/Gui/Utils/Remuxer.cs b/LongoMatch.GUI.Multimedia/Gui/Utils/Remuxer.cs
index 528c1ff..4350955 100644
--- a/LongoMatch.GUI.Multimedia/Gui/Utils/Remuxer.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/Utils/Remuxer.cs
@@ -61,7 +61,7 @@ namespace LongoMatch.Video.Utils
}
}
- this.multimedia = new MultimediaFactory();
+ this.multimedia = new MultimediaToolkit();
}
public string Remux(Window parent) {
diff --git a/LongoMatch.GUI.Multimedia/LongoMatch.GUI.Multimedia.mdp
b/LongoMatch.GUI.Multimedia/LongoMatch.GUI.Multimedia.mdp
index a289b13..33dfc11 100644
--- a/LongoMatch.GUI.Multimedia/LongoMatch.GUI.Multimedia.mdp
+++ b/LongoMatch.GUI.Multimedia/LongoMatch.GUI.Multimedia.mdp
@@ -29,6 +29,7 @@
<File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.PlayerCapturerBin.cs" />
<File subtype="Directory" buildaction="Compile" name="Gui/Utils" />
<File subtype="Code" buildaction="Compile" name="Gui/Utils/Remuxer.cs" />
+ <File subtype="Code" buildaction="Compile" name="MultimediaToolkit.cs" />
</Contents>
<MonoDevelop.Autotools.MakefileInfo RelativeMakefileName="Makefile.am" RelativeConfigureInPath="../">
<BuildFilesVar Name="FILES" />
diff --git a/LongoMatch.GUI.Multimedia/MultimediaToolkit.cs b/LongoMatch.GUI.Multimedia/MultimediaToolkit.cs
new file mode 100644
index 0000000..b01b467
--- /dev/null
+++ b/LongoMatch.GUI.Multimedia/MultimediaToolkit.cs
@@ -0,0 +1,40 @@
+// PlayerMaker.cs
+//
+// Copyright(C) 2007-2009 Andoni Morales Alastruey
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+//Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+//
+using LongoMatch.Video.Utils;
+using LongoMatch.Interfaces.Multimedia;
+using LongoMatch.Store;
+
+using Remuxer = LongoMatch.Video.Utils;
+
+namespace LongoMatch.Video
+{
+
+ public class MultimediaToolkit:MultimediaFactory, IMultimediaToolkit
+ {
+
+ public MultimediaToolkit () {
+ }
+
+ public string RemuxFile (MediaFile file, object window) {
+ LongoMatch.Video.Utils.Remuxer remuxer = new LongoMatch.Video.Utils.Remuxer (file);
+ return remuxer.Remux (window as Gtk.Window);
+ }
+ }
+}
diff --git a/LongoMatch.GUI/Gui/Component/BackgroundWidget.cs
b/LongoMatch.GUI/Gui/Component/BackgroundWidget.cs
new file mode 100644
index 0000000..c5bd1e6
--- /dev/null
+++ b/LongoMatch.GUI/Gui/Component/BackgroundWidget.cs
@@ -0,0 +1,79 @@
+//
+// Copyright (C) 2014 Andoni Morales Alastruey
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+using System;
+using Gtk;
+using Gdk;
+
+using Image = LongoMatch.Common.Image;
+
+
+namespace LongoMatch.Gui.Component
+{
+ [System.ComponentModel.ToolboxItem(true)]
+ public partial class BackgroundWidget : Gtk.Bin
+ {
+ public BackgroundWidget ()
+ {
+ this.Build ();
+ drawingarea.ExposeEvent += HandleExposeEvent;
+ }
+
+ public Pixbuf Background {
+ get;
+ set;
+ }
+
+ void HandleExposeEvent (object o, ExposeEventArgs args)
+ {
+ Pixbuf frame;
+ int width, height, allocWidth, allocHeight, logoX, logoY;
+ float ratio;
+
+ if (Background == null)
+ return;
+
+ width = Background.Width;
+ height = Background.Height;
+ allocWidth = Allocation.Width;
+ allocHeight = Allocation.Height;
+
+ frame = new Pixbuf (Colorspace.Rgb, false, 8, this.Allocation.Width,
+ this.Allocation.Height);
+
+ ratio = Math.Min ((float) allocWidth / (float) width,
+ (float) allocHeight / (float) height);
+
+ logoX = (int) ((allocWidth / 2) - (width * ratio / 2));
+ logoY = (int) ((allocHeight / 2) - (height * ratio / 2));
+
+ /* Scaling to available space */
+ Background.Composite (frame, 0, 0, allocWidth, allocHeight,
+ logoX, logoY, ratio, ratio,
+ InterpType.Bilinear, 255);
+
+ /* Drawing our frame */
+ frame.RenderToDrawable (drawingarea.GdkWindow, Style.BlackGC, 0, 0,
+ args.Event.Area.X, args.Event.Area.Y,
+ args.Event.Area.Width, args.Event.Area.Height,
+ RgbDither.Normal, args.Event.Area.X, args.Event.Area.Y);
+ frame.Dispose ();
+ return;
+ }
+ }
+}
+
diff --git a/LongoMatch.GUI/Gui/Component/ProjectListWidget.cs
b/LongoMatch.GUI/Gui/Component/ProjectListWidget.cs
index 61d580d..c766a7d 100644
--- a/LongoMatch.GUI/Gui/Component/ProjectListWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/ProjectListWidget.cs
@@ -21,6 +21,7 @@
using System;
using System.Collections.Generic;
using System.IO;
+using System.Linq;
using Mono.Unix;
using Gtk;
@@ -39,114 +40,86 @@ namespace LongoMatch.Gui.Component
[System.ComponentModel.ToolboxItem(true)]
public partial class ProjectListWidget : Gtk.Bin
{
-
- private Gtk.ListStore projectsListStore;
- private List<ProjectDescription> projectsList;
- private TreeModelFilter filter;
public event ProjectsSelectedHandler ProjectsSelected;
-
+ public event ProjectSelectedHandler ProjectSelected;
+
+ const int COL_DISPLAY_NAME = 0;
+ const int COL_PIXBUF = 1;
+ const int COL_PROJECT_DESCRIPTION = 2;
+ TreeModelFilter filter;
+ List<ProjectDescription> projects;
+ ListStore store;
public ProjectListWidget()
{
this.Build();
- projectsListStore = new Gtk.ListStore(typeof(Project));
-
- Gtk.TreeViewColumn fileDescriptionColumn = new Gtk.TreeViewColumn();
- fileDescriptionColumn.Title = Catalog.GetString("Filename");
- Gtk.CellRendererText filenameCell = new Gtk.CellRendererText();
- Gtk.CellRendererText filePropertiesCell = new Gtk.CellRendererText();
- Gtk.CellRendererPixbuf miniatureCell = new Gtk.CellRendererPixbuf();
- fileDescriptionColumn.PackStart(miniatureCell,false);
- fileDescriptionColumn.PackStart(filenameCell, true);
- fileDescriptionColumn.PackStart(filePropertiesCell, true);
-
- fileDescriptionColumn.SetCellDataFunc(filenameCell, new
Gtk.TreeCellDataFunc(RenderName));
- fileDescriptionColumn.SetCellDataFunc(filePropertiesCell, new
Gtk.TreeCellDataFunc(RenderProperties));
- fileDescriptionColumn.SetCellDataFunc(miniatureCell, new
Gtk.TreeCellDataFunc(RenderPixbuf));
-
- treeview.AppendColumn(fileDescriptionColumn);
- treeview.EnableGridLines = TreeViewGridLines.Horizontal;
- treeview.HeadersVisible = false;
+
+ //GtkGlue.EntrySetIcon (filterEntry, GtkGlue.EntryIconPosition.Secondary,
"gtk-clear");
+ store = CreateStore ();
+ iconview.TextColumn = COL_DISPLAY_NAME;
+ iconview.PixbufColumn = COL_PIXBUF;
+ iconview.SelectionChanged += OnSelectionChanged;
+ iconview.ItemActivated += HandleItemActivated;
+ iconview.ItemWidth = 200;
}
public SelectionMode SelectionMode {
set {
- treeview.Selection.Mode = value;
+ iconview.SelectionMode = value;
}
}
-
- public void RemoveProjects(List<ProjectDescription> projects) {
- /* FIXME: to delete projects from the treeview we need to remove the filter
- * and clear everything, otherwise we have seen several crashes trying
- * to render cells with an invalid iter. It's not very performant, but
- * it's safe. */
- treeview.Model = projectsListStore;
- projectsListStore.Clear();
- foreach(ProjectDescription project in projects)
- projectsList.Remove(project);
- Fill(projectsList);
+
+ public void Fill (List<ProjectDescription> projects)
+ {
+ this.projects = projects;
+ store.Clear ();
+ foreach (ProjectDescription pdesc in projects)
+ {
+ store.AppendValues (Describe (pdesc), pdesc.File.Preview.Value, pdesc);
+ }
}
- public void Fill(List<ProjectDescription> projects) {
- projectsList = projects;
- projectsList.Sort();
- projectsListStore.Clear();
- foreach(ProjectDescription project in projectsList) {
- projectsListStore.AppendValues(project);
+ public void RemoveProjects(List<ProjectDescription> projects) {
+ foreach (ProjectDescription project in projects) {
+ this.projects.Remove(project);
}
- filter = new Gtk.TreeModelFilter(projectsListStore, null);
- filter.VisibleFunc = new Gtk.TreeModelFilterVisibleFunc(FilterTree);
- treeview.Model = filter;
- treeview.Selection.Mode = SelectionMode.Multiple;
- treeview.Selection.Changed += OnSelectionChanged;
+ Fill (this.projects);
}
public void ClearSearch() {
filterEntry.Text="";
}
-
- private void RenderPixbuf(Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel
model, Gtk.TreeIter iter)
- {
- ProjectDescription project = (ProjectDescription) model.GetValue(iter, 0);
-
- (cell as Gtk.CellRendererPixbuf).Pixbuf= project.File.Preview != null ?
project.File.Preview.Value : null;
+
+ string Describe (ProjectDescription project) {
+ string ret;
+
+ ret = project.Title;
+ ret += String.Format ("\n {0} - {1} ({2}-{3})", project.LocalName,
+ project.VisitorName, project.LocalGoals,
+ project.VisitorGoals);
+ ret += "\n" + project.Format;
+ return ret;
}
-
- private void RenderProperties(Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel
model, Gtk.TreeIter iter)
+
+ ListStore CreateStore ()
{
- string text;
- ProjectDescription project = (ProjectDescription) model.GetValue(iter, 0);
-
- text = "\n"+"\n"+"\n"+"<b>"+Catalog.GetString("File length")+":</b> " +
- (new Time {MSeconds = (int)project.File.Length}).ToSecondsString();
- text = text +"\n"+"<b>"+Catalog.GetString("Video codec")+":</b> " +
project.File.VideoCodec;
- text = text +"\n"+"<b>"+Catalog.GetString("Audio codec")+":</b> " +
project.File.AudioCodec;
- text = text +"\n"+"<b>"+Catalog.GetString("Format")+":</b> " + project.Format;
-
- (cell as Gtk.CellRendererText).Markup = text;
+ store = new ListStore (typeof (string), typeof (Gdk.Pixbuf), typeof
(ProjectDescription));
+ store.DefaultSortFunc = SortFunc;
+ store.SetSortColumnId (COL_DISPLAY_NAME, SortType.Ascending);
+ filter = new Gtk.TreeModelFilter (store, null);
+ filter.VisibleFunc = new Gtk.TreeModelFilterVisibleFunc (FilterTree);
+ iconview.Model = filter;
+ return store;
}
- private void RenderName(Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel
model, Gtk.TreeIter iter)
+ int SortFunc (TreeModel model, TreeIter a, TreeIter b)
{
- string text;
- ProjectDescription project = (ProjectDescription) model.GetValue(iter, 0);
-
- text = "<b>"+Catalog.GetString("Title")+":</b> " + GLib.Markup.EscapeText
(project.Title);
- text = text +"\n"+"<b>"+Catalog.GetString("Local team")+":</b> " +
GLib.Markup.EscapeText (project.LocalName);
- text = text +"\n"+"<b>"+Catalog.GetString("Visitor team")+":</b> " +
GLib.Markup.EscapeText (project.VisitorName);
- text = text +"\n"+"<b>"+Catalog.GetString("Season")+":</b> " +
GLib.Markup.EscapeText (project.Season);
- text = text +"\n"+"<b>"+Catalog.GetString("Competition")+":</b> " +
GLib.Markup.EscapeText (project.Competition);
- text = text +"\n"+"<b>"+Catalog.GetString("Result")+":</b> " +
project.LocalGoals+"-"+ project.VisitorGoals;
- if (project.Title == Constants.FAKE_PROJECT) {
- text = text +"\n"+"<b>"+Catalog.GetString("Date")+":</b> " +
project.LastModified.ToShortDateString() +
- " " + project.LastModified.ToShortTimeString();
- } else {
- text = text +"\n"+"<b>"+Catalog.GetString("Date")+":</b> " +
project.MatchDate.ToShortDateString();
- }
-
- (cell as Gtk.CellRendererText).Markup = text;
+ ProjectDescription pa = (ProjectDescription) model.GetValue (a,
COL_PROJECT_DESCRIPTION);
+ ProjectDescription pb = (ProjectDescription) model.GetValue (b,
COL_PROJECT_DESCRIPTION);
+
+ return (int) (pa.LastModified.Ticks - pb.LastModified.Ticks);
}
-
+
protected virtual void OnFilterentryChanged(object sender, System.EventArgs e)
{
filter.Refilter();
@@ -154,7 +127,7 @@ namespace LongoMatch.Gui.Component
private bool FilterTree(Gtk.TreeModel model, Gtk.TreeIter iter)
{
- ProjectDescription project =(ProjectDescription) model.GetValue(iter, 0);
+ ProjectDescription project =(ProjectDescription) model.GetValue(iter,
COL_PROJECT_DESCRIPTION);
if(project == null)
return true;
@@ -181,15 +154,30 @@ namespace LongoMatch.Gui.Component
List<ProjectDescription> list;
TreePath[] pathArray;
- list = new List<ProjectDescription>();
- pathArray = treeview.Selection.GetSelectedRows();
+ if(ProjectsSelected != null) {
+ list = new List<ProjectDescription>();
+ pathArray = iconview.SelectedItems;
+
+ for(int i=0; i< pathArray.Length; i++) {
+ iconview.Model.GetIterFromString (out iter, pathArray[i].ToString());
+ list.Add ((ProjectDescription) iconview.Model.GetValue (iter,
COL_PROJECT_DESCRIPTION));
+ }
+ ProjectsSelected (list);
+ }
+ }
- for(int i=0; i< pathArray.Length; i++) {
- treeview.Model.GetIterFromString(out iter, pathArray[i].ToString());
- list.Add((ProjectDescription) treeview.Model.GetValue(iter, 0));
+ void HandleItemActivated (object o, ItemActivatedArgs args)
+ {
+ TreeIter iter;
+ ProjectDescription pdesc;
+
+ if (ProjectSelected != null) {
+ iconview.Model.GetIter (out iter, args.Path);
+ pdesc = iconview.Model.GetValue (iter, COL_PROJECT_DESCRIPTION) as
ProjectDescription;
+ if (pdesc != null) {
+ ProjectSelected (pdesc);
+ }
}
- if(ProjectsSelected != null)
- ProjectsSelected(list);
}
}
}
diff --git a/LongoMatch.GUI/Gui/Component/TeamPlayersSelection.cs
b/LongoMatch.GUI/Gui/Component/TeamPlayersSelection.cs
new file mode 100644
index 0000000..2681b4a
--- /dev/null
+++ b/LongoMatch.GUI/Gui/Component/TeamPlayersSelection.cs
@@ -0,0 +1,126 @@
+//
+// Copyright (C) 2014 Andoni Morales Alastruey
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+using System;
+using Gtk;
+using LongoMatch.Interfaces;
+using LongoMatch.Store.Templates;
+using LongoMatch.Store;
+using Gdk;
+
+namespace LongoMatch.Gui.Component
+{
+ [System.ComponentModel.ToolboxItem(true)]
+ public partial class TeamPlayersSelection : Gtk.Bin
+ {
+
+ ITeamTemplatesProvider teamsTemplates;
+ TeamTemplate template;
+ ListStore teams, players;
+
+ enum Columns {
+ Desc,
+ Number,
+ Playing,
+ Photo,
+ Player,
+ NumCols,
+ }
+
+ public TeamPlayersSelection ()
+ {
+ CellRendererToggle togglerenderer;
+ CellRendererText textrenderer;
+
+ this.Build ();
+ teams = new ListStore (typeof(string));
+ players = new ListStore (typeof(string), typeof(string), typeof(bool),
typeof(Pixbuf), typeof(Player));
+ teamscombobox.Model = teams;
+ playersiconview.Model = players;
+ teamscombobox.Changed += HandleChanged;
+
+ togglerenderer = new CellRendererToggle ();
+ togglerenderer.Radio = false;
+ togglerenderer.Toggled += HandleToggled;
+ textrenderer = new CellRendererText ();
+ playersiconview.PixbufColumn = (int) Columns.Photo;
+ playersiconview.TooltipColumn = (int) Columns.Desc;
+ playersiconview.PackEnd (textrenderer, false);
+ playersiconview.PackEnd (togglerenderer, false);
+ playersiconview.SetAttributes (togglerenderer, "active", Columns.Playing);
+ playersiconview.SetAttributes (textrenderer, "text", Columns.Number);
+ playersiconview.Orientation = Orientation.Horizontal;
+ playersiconview.SelectionMode = SelectionMode.None;
+ }
+
+ public ITeamTemplatesProvider TemplatesProvider {
+ set {
+ teamsTemplates = value;
+ teams.Clear ();
+ foreach (string name in teamsTemplates.TemplatesNames) {
+ teams.AppendValues (name);
+ }
+ teamscombobox.Active = 0;
+ }
+ }
+
+ public TeamTemplate Template {
+ get {
+ return template;
+ }
+ }
+
+ public void Load (string name) {
+ if (name != null) {
+ template = teamsTemplates.Load (name);
+ if (template.Shield != null) {
+ shieldimage.Pixbuf = template.Shield.Value;
+ }
+ namelabel.Text = template.TeamName;
+ players.Clear ();
+ foreach (Player p in template) {
+ Pixbuf playerImage;
+
+ if (p.Photo != null) {
+ playerImage = p.Photo.Value;
+ } else {
+ playerImage = Stetic.IconLoader.LoadIcon (this,
"stock_person", IconSize.Dialog);
+ }
+ players.AppendValues (String.Format("{0} {1}", p.Name, p.Number),
+ p.Number.ToString(), p.Playing, playerImage, p);
+ }
+ }
+ }
+
+ void HandleChanged (object sender, EventArgs e)
+ {
+ Load (teamscombobox.ActiveText);
+ }
+
+ void HandleToggled (object o, ToggledArgs args)
+ {
+ Player player;
+ TreeIter iter;
+
+ playersiconview.Model.GetIterFromString (out iter, args.Path);
+ player = playersiconview.Model.GetValue (iter, (int) Columns.Player) as Player;
+ player.Playing = !(o as CellRendererToggle).Active;
+ playersiconview.Model.SetValue (iter, (int) Columns.Playing, player.Playing);
+ }
+ }
+}
+
diff --git a/LongoMatch.GUI/Gui/GUIToolkit.cs b/LongoMatch.GUI/Gui/GUIToolkit.cs
index 3574b8a..75af3e8 100644
--- a/LongoMatch.GUI/Gui/GUIToolkit.cs
+++ b/LongoMatch.GUI/Gui/GUIToolkit.cs
@@ -34,6 +34,8 @@ using LongoMatch.Store.Templates;
using LongoMatch.Video.Utils;
using LongoMatch.Gui.Helpers;
using LongoMatch.Stats;
+using LongoMatch.Gui.Panel;
+using LongoMatch.Interfaces.Multimedia;
namespace LongoMatch.Gui
{
@@ -131,6 +133,7 @@ namespace LongoMatch.Gui
List<EditionJob> jobs = new List<EditionJob>();
int response;
+ Log.Information ("Configure rendering job");
if (playlist.Count == 0) {
WarningMessage(Catalog.GetString("The playlist you want to render is
empty."));
return null;
@@ -178,7 +181,7 @@ namespace LongoMatch.Gui
string seriesName;
string outDir;
-
+ Log.Information ("Export frame series");
sd= new SnapshotsDialog();
sd.TransientFor= mainWindow as Gtk.Window;
sd.Play = play.Name;
@@ -202,6 +205,7 @@ namespace LongoMatch.Gui
public void TagPlay (Play play, Categories categories, TeamTemplate local, TeamTemplate
visitor, bool showAllTags) {
TaggerDialog tg = new TaggerDialog(play, categories, local, visitor, showAllTags);
+ Log.Information ("Tag play");
tg.TransientFor = mainWindow as Gtk.Window;
tg.Run();
tg.Destroy();
@@ -210,6 +214,7 @@ namespace LongoMatch.Gui
public void DrawingTool (Image image, Play play, int stopTime) {
DrawingTool dialog = new DrawingTool();
+ Log.Information ("Drawing tool");
dialog.Image = image.Value;
if (play != null)
dialog.SetPlay(play, stopTime);
@@ -219,22 +224,16 @@ namespace LongoMatch.Gui
dialog.Destroy();
}
- public ProjectDescription SelectProject(List<ProjectDescription> projects) {
- ProjectDescription project = null;
- OpenProjectDialog opd = new OpenProjectDialog();
-
- opd.Fill(projects);
- opd.TransientFor = mainWindow as Gtk.Window;
- if(opd.Run() == (int)ResponseType.Ok)
- project = opd.SelectedProject;
- opd.Destroy();
- return project;
+ public void SelectProject(List<ProjectDescription> projects) {
+ Log.Information ("Select project");
+ mainWindow.SelectProject (projects);
}
public void OpenCategoriesTemplatesManager(ITemplatesService ts)
{
var tManager = new TemplatesManager<Categories, Category>
(ts.CategoriesTemplateProvider,
new
CategoriesTemplateEditorWidget(ts));
+ Log.Information ("Open sports templates manager");
tManager.TransientFor = mainWindow as Gtk.Window;
tManager.Show();
}
@@ -243,6 +242,7 @@ namespace LongoMatch.Gui
{
var tManager = new TemplatesManager<TeamTemplate, Player> (teamProvider,
new
TeamTemplateEditorWidget(teamProvider));
+ Log.Information ("Open teams templates manager");
tManager.TransientFor = mainWindow as Gtk.Window;
tManager.Show();
}
@@ -250,6 +250,7 @@ namespace LongoMatch.Gui
public void OpenProjectsManager(Project openedProject, IDatabase db, ITemplatesService ts)
{
Gui.Dialog.ProjectsManager pm = new Gui.Dialog.ProjectsManager(openedProject, db, ts);
+ Log.Information ("Open projects manager");
pm.TransientFor = mainWindow as Gtk.Window;
pm.Show();
}
@@ -257,6 +258,7 @@ namespace LongoMatch.Gui
public void OpenPreferencesEditor()
{
PropertiesEditor pe = new PropertiesEditor();
+ Log.Information ("Open preferences");
pe.TransientFor = mainWindow as Gtk.Window;
pe.Run();
pe.Destroy();
@@ -265,6 +267,7 @@ namespace LongoMatch.Gui
public void OpenDatabasesManager(IDataBaseManager manager)
{
DatabasesManager dm = new DatabasesManager (manager);
+ Log.Information ("Open db manager");
dm.TransientFor = mainWindow as Gtk.Window;
dm.Run();
dm.Destroy();
@@ -272,93 +275,31 @@ namespace LongoMatch.Gui
public void ManageJobs(IRenderingJobsManager manager) {
RenderingJobsDialog dialog = new RenderingJobsDialog(manager);
+ Log.Information ("Manage jobs");
dialog.TransientFor = mainWindow as Gtk.Window;
dialog.Run();
dialog.Destroy();
}
- public ProjectType SelectNewProjectType () {
- ProjectSelectionDialog psd;
- int response;
-
- psd = new ProjectSelectionDialog();
- psd.TransientFor = mainWindow as Gtk.Window;;
- response = psd.Run();
- psd.Destroy();
- if(response != (int)ResponseType.Ok)
- return ProjectType.None;
- return psd.ProjectType;
- }
-
- public Project NewCaptureProject(IDatabase db, ITemplatesService ts,
- List<LongoMatch.Common.Device> devices, out CaptureSettings captureSettings)
- {
- return NewProject(db, null, ProjectType.CaptureProject, ts, devices, out
captureSettings);
- }
-
- public Project NewURICaptureProject(IDatabase db, ITemplatesService ts,
- out CaptureSettings captureSettings)
- {
- return NewProject(db, null, ProjectType.URICaptureProject, ts, null, out
captureSettings);
- }
-
- public Project NewFakeProject(IDatabase db, ITemplatesService ts) {
- CaptureSettings captureSettings = new CaptureSettings();
- return NewProject(db, null, ProjectType.FakeCaptureProject, ts, null, out
captureSettings);
- }
-
- public Project NewFileProject(IDatabase db, ITemplatesService ts) {
- CaptureSettings captureSettings = new CaptureSettings();
- return NewProject(db, null, ProjectType.FileProject, ts, null, out captureSettings);
- }
-
- public Project EditFakeProject(IDatabase db, Project project, ITemplatesService ts) {
- CaptureSettings captureSettings = new CaptureSettings();
- return NewProject(db, project, ProjectType.EditProject, ts, null, out
captureSettings);
- }
-
- public IBusyDialog BusyDialog(string message) {
+ public IBusyDialog BusyDialog(string message, object parent=null) {
BusyDialog dialog;
dialog = new BusyDialog();
- dialog.TransientFor = mainWindow as Gtk.Window;
+ if (parent != null) {
+ dialog.TransientFor = (parent as Widget).Toplevel as Gtk.Window;
+ } else {
+ dialog.TransientFor = mainWindow as Gtk.Window;
+ }
dialog.Message = message;
return dialog;
}
- 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) {
- project = null;
- 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 || type == ProjectType.URICaptureProject)
- captureSettings = npd.CaptureSettings;
- else
- captureSettings = new CaptureSettings();
- npd.Destroy();
- return project;
+ public void CreateNewProject(ITemplatesService tps, IMultimediaToolkit toolkit, Project
project=null) {
+ mainWindow.CreateNewProject (tps, toolkit, project);
}
public void ShowProjectStats (Project project) {
+ Log.Information ("Show project stats");
StatsViewer dialog = new StatsViewer ();
dialog.LoadStats (project);
dialog.TransientFor = mainWindow as Gtk.Window;
@@ -368,6 +309,7 @@ namespace LongoMatch.Gui
}
public string RemuxFile (string inputFile, string outputFile, VideoMuxerType muxer) {
+ Log.Information ("Remux file");
Remuxer remuxer = new Remuxer (PreviewMediaFile.DiscoverFile(inputFile),
outputFile, muxer);
return remuxer.Remux (mainWindow as Gtk.Window);
@@ -378,16 +320,19 @@ namespace LongoMatch.Gui
out IAnalysisWindow analysisWindow,
out IProjectOptionsController projectOptionsController)
{
+ Log.Information ("Open project");
analysisWindow = mainWindow.SetProject (project, projectType, props, filter);
projectOptionsController = mainWindow;
}
public void CloseProject ()
{
+ Log.Information ("Close project");
mainWindow.CloseProject ();
}
public void Quit () {
+ Log.Information ("Quit application");
Gtk.Application.Quit ();
}
}
diff --git a/LongoMatch.GUI/Gui/MainWindow.cs b/LongoMatch.GUI/Gui/MainWindow.cs
index f275f8e..05f5542 100644
--- a/LongoMatch.GUI/Gui/MainWindow.cs
+++ b/LongoMatch.GUI/Gui/MainWindow.cs
@@ -36,6 +36,8 @@ using LongoMatch.Store.Templates;
using LongoMatch.Video.Common;
using LongoMatch.Gui.Component;
using LongoMatch.Gui.Helpers;
+using LongoMatch.Gui.Panel;
+using LongoMatch.Interfaces.Multimedia;
namespace LongoMatch.Gui
@@ -46,7 +48,9 @@ namespace LongoMatch.Gui
{
/* IMainController */
public event NewProjectHandler NewProjectEvent;
+ public event OpenNewProjectHandler OpenNewProjectEvent;
public event OpenProjectHandler OpenProjectEvent;
+ public event OpenProjectIDHandler OpenProjectIDEvent;
public event ImportProjectHandler ImportProjectEvent;
public event ExportProjectHandler ExportProjectEvent;
public event QuitApplicationHandler QuitApplicationEvent;
@@ -82,6 +86,8 @@ namespace LongoMatch.Gui
this.Build();
this.guiToolKit = guiToolkit;
+ welcomepanel1.Bind (this);
+
Title = Constants.SOFTWARE_NAME;
TagSubcategoriesAction.Active = !Config.FastTagging;
projectType = ProjectType.None;
@@ -112,6 +118,21 @@ namespace LongoMatch.Gui
}
}
+ public void SetPanel (Widget panel) {
+ if (panel == null) {
+ ResetGUI ();
+ } else {
+ foreach (Widget widget in centralbox.AllChildren) {
+ if (widget != welcomepanel1) {
+ centralbox.Remove (widget);
+ }
+ }
+ panel.Show();
+ centralbox.PackStart (panel, true, true, 0);
+ welcomepanel1.Hide ();
+ }
+ }
+
public void AddExportEntry (string name, string shortName, Action<Project, IGUIToolkit>
exportAction) {
MenuItem parent = (MenuItem)
this.UIManager.GetWidget("/menubar1/ToolsAction/ExportProjectAction1");
@@ -144,8 +165,7 @@ namespace LongoMatch.Gui
}
MakeActionsSensitive(true, projectType);
analysisWindow.SetProject (project, projectType, props, filter);
- (analysisWindow as Gtk.Widget).Show();
- centralbox.PackStart (analysisWindow as Gtk.Widget, true, true, 0);
+ SetPanel (analysisWindow as Widget);
return analysisWindow;
}
@@ -156,6 +176,21 @@ namespace LongoMatch.Gui
ResetGUI ();
}
+ public void SelectProject (List<ProjectDescription> projects) {
+ OpenProjectPanel panel = new OpenProjectPanel ();
+ panel.Projects = projects;
+ panel.BackEvent += ResetGUI;
+ panel.OpenProjectEvent += EmitOpenProjectID;
+ SetPanel (panel);
+ }
+
+ public void CreateNewProject (ITemplatesService tps, IMultimediaToolkit mtoolkit, Project
project) {
+ NewProjectPanel panel = new NewProjectPanel (tps, guiToolKit, mtoolkit, project);
+ panel.CancelEvent += ResetGUI;
+ panel.OpenNewProjectEvent += EmitOpenNewProject;
+ SetPanel (panel);
+ }
+
#endregion
#region Private Methods
@@ -188,6 +223,12 @@ namespace LongoMatch.Gui
private void ResetGUI() {
Title = Constants.SOFTWARE_NAME;
MakeActionsSensitive(false, projectType);
+ foreach (Widget widget in centralbox.AllChildren) {
+ if (widget != welcomepanel1) {
+ centralbox.Remove (widget);
+ }
+ }
+ welcomepanel1.Show ();
}
private void MakeActionsSensitive(bool sensitive, ProjectType projectType) {
@@ -223,14 +264,12 @@ namespace LongoMatch.Gui
#region File
protected virtual void OnNewActivated(object sender, System.EventArgs e)
{
- if (NewProjectEvent != null)
- NewProjectEvent();
+ EmitNewProject();
}
protected virtual void OnOpenActivated(object sender, System.EventArgs e)
{
- if(OpenProjectEvent != null)
- OpenProjectEvent();
+ EmitOpenProject();
}
#endregion
@@ -335,59 +374,83 @@ namespace LongoMatch.Gui
#region Events
- private void EmitEditPreferences ()
+ public void EmitNewProject () {
+ if (NewProjectEvent != null)
+ NewProjectEvent();
+ }
+
+ public void EmitOpenProject () {
+ if(OpenProjectEvent != null)
+ OpenProjectEvent();
+ }
+
+ public void EmitEditPreferences ()
{
if (EditPreferencesEvent != null)
EditPreferencesEvent();
}
- private void EmitSaveProject() {
+ public void EmitManageJobs() {
+ if(ManageJobsEvent != null)
+ ManageJobsEvent();
+ }
+
+ public void EmitManageTeams() {
+ if(ManageTeamsEvent != null)
+ ManageTeamsEvent();
+ }
+
+ public void EmitManageProjects()
+ {
+ if (ManageProjectsEvent != null)
+ ManageProjectsEvent();
+ }
+
+ public void EmitManageDatabases()
+ {
+ if (ManageDatabasesEvent != null)
+ ManageDatabasesEvent();
+ }
+
+ public void EmitManageCategories() {
+ if(ManageCategoriesEvent != null)
+ ManageCategoriesEvent();
+ }
+
+ void EmitSaveProject() {
if (SaveProjectEvent != null)
SaveProjectEvent(openedProject, projectType);
}
- private void EmitCloseOpenedProject() {
+ void EmitCloseOpenedProject() {
if (CloseOpenedProjectEvent != null)
CloseOpenedProjectEvent ();
}
- private void EmitImportProject(string name, string filterName, string filter,
+ void EmitImportProject(string name, string filterName, string filter,
Func<string, Project> func, bool requiresNewFile) {
if (ImportProjectEvent != null)
ImportProjectEvent(name, filterName, filter, func, requiresNewFile);
}
- private void EmitExportProject() {
+ void EmitExportProject() {
if(ExportProjectEvent != null)
ExportProjectEvent();
}
- private void EmitManageJobs() {
- if(ManageJobsEvent != null)
- ManageJobsEvent();
- }
-
- private void EmitManageTeams() {
- if(ManageTeamsEvent != null)
- ManageTeamsEvent();
- }
-
- private void EmitManageCategories() {
- if(ManageCategoriesEvent != null)
- ManageCategoriesEvent();
+ void EmitOpenProjectID (Guid projectID ) {
+ if (OpenProjectIDEvent != null) {
+ OpenProjectIDEvent (projectID);
+ }
}
- private void EmitManageProjects()
+ void EmitOpenNewProject (Project project, ProjectType projectType, CaptureSettings
captureSettings)
{
- if (ManageProjectsEvent != null)
- ManageProjectsEvent();
+ if (OpenNewProjectEvent != null) {
+ OpenNewProjectEvent (project, projectType, captureSettings);
+ }
}
- private void EmitManageDatabases()
- {
- if (ManageDatabasesEvent != null)
- ManageDatabasesEvent();
- }
#endregion
}
}
diff --git a/LongoMatch.GUI/Gui/Panel/NewProjectPanel.cs b/LongoMatch.GUI/Gui/Panel/NewProjectPanel.cs
new file mode 100644
index 0000000..e27c074
--- /dev/null
+++ b/LongoMatch.GUI/Gui/Panel/NewProjectPanel.cs
@@ -0,0 +1,346 @@
+//
+// Copyright (C) 2014 Andoni Morales Alastruey
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+using System;
+using System.Collections.Generic;
+using Gtk;
+using Gdk;
+using LongoMatch.Handlers;
+using LongoMatch.Interfaces;
+using LongoMatch.Interfaces.Multimedia;
+using LongoMatch.Store;
+using LongoMatch.Common;
+using LongoMatch.Store.Templates;
+using LongoMatch.Multimedia.Utils;
+using Misc = LongoMatch.Gui.Helpers.Misc;
+using Mono.Unix;
+using LongoMatch.Gui.Popup;
+using LongoMatch.Gui.Dialog;
+using LongoMatch.Gui.Helpers;
+using LongoMatch.Video.Utils;
+using LongoMatch.Utils;
+using LongoMatch.Interfaces.GUI;
+
+using Device = LongoMatch.Common.Device;
+
+namespace LongoMatch.Gui.Panel
+{
+ [System.ComponentModel.ToolboxItem(true)]
+ public partial class NewProjectPanel : Gtk.Bin
+ {
+ public event BackEventHandle CancelEvent;
+ public event OpenNewProjectHandler OpenNewProjectEvent;
+
+ const int PROJECT_TYPE = 0;
+ const int PROJECT_DETAILS = 1;
+
+ Project project;
+ ProjectType projectType;
+ ITemplatesService tps;
+ List<Device> videoDevices;
+ ListStore videoStandardList, encProfileList, qualList;
+ CalendarPopup cp;
+ Win32CalendarDialog win32CP;
+ MediaFile mediaFile;
+ IMultimediaToolkit mtoolkit;
+ IGUIToolkit gtoolkit;
+ Color red;
+
+ public NewProjectPanel (ITemplatesService tps, IGUIToolkit gtoolkit,
+ IMultimediaToolkit mtoolkit, Project project)
+ {
+ this.Build ();
+ this.tps = tps;
+ this.mtoolkit = mtoolkit;
+ this.gtoolkit = gtoolkit;
+ notebook1.ShowTabs = false;
+ notebook1.ShowBorder = false;
+ backgroundwidget.Background = Gdk.Pixbuf.LoadFromResource
(Constants.BACKGROUND).RotateSimple (Gdk.PixbufRotation.Counterclockwise);
+ backgroundwidget.WidthRequest = 200;
+ nextbutton.Clicked += HandleNextClicked;
+ backbutton.Clicked += HandleBackClicked;
+ if (project == null) {
+ notebook1.Page = 0;
+ this.project = new Project {Description = new ProjectDescription ()};
+ this.project.Description.MatchDate = DateTime.Now;
+ } else {
+ notebook1.Page = 1;
+ this.project = project;
+ }
+ localteamplayersselection.TemplatesProvider = tps.TeamTemplateProvider;
+ awayteamplayersselection.TemplatesProvider = tps.TeamTemplateProvider;
+ ConnectSignals ();
+ FillProjectDetails ();
+ FillCategories ();
+ FillFormats ();
+ FillDevices (mtoolkit.VideoDevices);
+ Color.Parse ("red", ref red);
+ outputfilelabel.ModifyFg (StateType.Normal, red);
+ Color.Parse ("red", ref red);
+ urilabel.ModifyFg (StateType.Normal, red);
+ Color.Parse ("red", ref red);
+ filelabel.ModifyFg (StateType.Normal, red);
+ }
+
+ void ConnectSignals () {
+ if(Environment.OSVersion.Platform != PlatformID.Win32NT) {
+ cp = new CalendarPopup();
+ cp.Hide();
+ cp.DateSelectedEvent += (selectedDate) => {
+ dateEntry.Text = selectedDate.ToShortDateString();};
+ }
+
+ calendarbutton.Clicked += HandleCalendarbuttonClicked;
+ openbutton.Clicked += HandleOpenbuttonClicked;
+ savebutton.Clicked += HandleSavebuttonClicked;
+ urientry.Changed += HandleEntryChanged;
+ fileEntry.Changed += HandleEntryChanged;
+ outfileEntry.Changed += HandleEntryChanged;
+ createbutton.Clicked += HandleCreateProject;
+ }
+
+ void FillProjectDetails () {
+ seasonentry.Text = project.Description.Season;
+ competitionentry.Text = project.Description.Competition;
+ dateEntry.Text = project.Description.MatchDate.ToShortDateString();
+ localSpinButton.Value = project.Description.LocalGoals;
+ visitorSpinButton.Value = project.Description.VisitorGoals;
+ }
+
+ void FillCategories() {
+ int i=0;
+ int index = 0;
+
+ foreach(string template in tps.CategoriesTemplateProvider.TemplatesNames) {
+ tagscombobox.AppendText(template);
+ if(template == "default")
+ index = i;
+ i++;
+ }
+ tagscombobox.Active = index;
+ }
+
+ void SetProjectType ()
+ {
+ bool filemode = false, urimode = false, capturemode = false;
+
+ if (fromfileradiobutton.Active) {
+ projectType = ProjectType.FileProject;
+ filemode = true;
+ } else if (liveradiobutton.Active) {
+ projectType = ProjectType.CaptureProject;
+ capturemode = true;
+ } else if (fakeliveradiobutton.Active) {
+ projectType = ProjectType.FakeCaptureProject;
+ } else if (uriliveradiobutton.Active) {
+ projectType = ProjectType.URICaptureProject;
+ urimode = true;
+ }
+ filetable.Visible = filemode;
+ outputfiletable.Visible = capturemode || urimode;
+ capturetable.Visible = capturemode || urimode;
+ urientry.Visible = urimode;
+ urilabel.Visible = urimode;
+ device.Visible = capturemode;
+ devicecombobox.Visible = capturemode;
+ }
+
+ void FillFormats() {
+ videoStandardList = Misc.FillImageFormat (imagecombobox, Config.CaptureVideoStandard);
+ encProfileList = Misc.FillEncodingFormat (encodingcombobox,
Config.CaptureEncodingProfile);
+ qualList = Misc.FillQuality (qualitycombobox, Config.CaptureEncodingQuality);
+ }
+
+ public void FillDevices(List<Device> devices) {
+ videoDevices = devices;
+
+ foreach(Device device in devices) {
+ string deviceElement, deviceName;
+
+ if (Environment.OSVersion.Platform == PlatformID.Win32NT) {
+ deviceElement = Catalog.GetString("DirectShow source");
+ } else {
+ if(device.DeviceType == CaptureSourceType.DV)
+ deviceElement = Catalog.GetString(Catalog.GetString("DV
source"));
+ else if (device.DeviceType == CaptureSourceType.System) {
+ deviceElement = Catalog.GetString(Catalog.GetString("System
source"));
+ } else {
+ deviceElement = Catalog.GetString(Catalog.GetString("GConf
source"));
+ }
+ }
+ deviceName = (device.ID == "") ? Catalog.GetString("Unknown"): device.ID;
+ devicecombobox.AppendText(deviceName + " ("+deviceElement+")");
+ devicecombobox.Active = 0;
+ }
+ }
+
+ void HandleCalendarbuttonClicked(object sender, System.EventArgs e)
+ {
+ if(Environment.OSVersion.Platform == PlatformID.Win32NT) {
+ win32CP = new Win32CalendarDialog();
+ win32CP.TransientFor = (Gtk.Window)this.Toplevel;
+ win32CP.Run();
+ dateEntry.Text = win32CP.getSelectedDate().ToShortDateString();
+ win32CP.Destroy();
+ }
+ else {
+ cp.TransientFor=(Gtk.Window)this.Toplevel;
+ cp.Show();
+ }
+ }
+
+ void HandleSavebuttonClicked(object sender, System.EventArgs e)
+ {
+ string filename;
+
+ filename = FileChooserHelper.SaveFile (this, Catalog.GetString("Output file"),
+ "Capture.mp4", Config.VideosDir, "MP4",
+ new string[] {"*.mp4"});
+ if (filename != null) {
+ outfileEntry.Text = System.IO.Path.ChangeExtension(filename, "mp4");
+ }
+ }
+
+ void HandleOpenbuttonClicked(object sender, System.EventArgs e)
+ {
+ mediaFile = Open.OpenFile (gtoolkit, mtoolkit, this);
+ if (mediaFile != null) {
+ fileEntry.Text = mediaFile.FilePath;
+ }
+ }
+
+ void HandleEntryChanged (object sender, EventArgs e)
+ {
+ if (fileEntry.Text != "") {
+ filelabel.ModifyFg (StateType.Normal);
+ } else {
+ filelabel.ModifyFg (StateType.Normal, red);
+ }
+ if (urientry.Text != "") {
+ urilabel.ModifyFg (StateType.Normal);
+ } else {
+ urilabel.ModifyFg (StateType.Normal, red);
+ }
+ if (outfileEntry.Text != "") {
+ outputfilelabel.ModifyFg (StateType.Normal);
+ } else {
+ outputfilelabel.ModifyFg (StateType.Normal, red);
+ }
+ QueueDraw ();
+ }
+
+ void HandleCreateProject (object sender, EventArgs e)
+ {
+ CaptureSettings captureSettings;
+ EncodingSettings encSettings;
+ TreeIter iter;
+ Project p;
+
+ if (projectType == ProjectType.FileProject) {
+ if (fileEntry.Text == "") {
+ gtoolkit.WarningMessage (Catalog.GetString ("No input video file"));
+ return;
+ }
+ }
+ if (projectType == ProjectType.CaptureProject ||
+ projectType == ProjectType.URICaptureProject) {
+ if (outfileEntry.Text == "") {
+ gtoolkit.WarningMessage (Catalog.GetString ("No output video file"));
+ return;
+ }
+ }
+ if (projectType == ProjectType.URICaptureProject) {
+ if (urientry.Text == "") {
+ gtoolkit.WarningMessage (Catalog.GetString ("No input URI"));
+ return;
+ }
+ }
+ p = new Project ();
+ p.Categories = tps.CategoriesTemplateProvider.Load(tagscombobox.ActiveText);
+ p.LocalTeamTemplate = localteamplayersselection.Template;
+ p.VisitorTeamTemplate = awayteamplayersselection.Template;
+ p.Description = new ProjectDescription ();
+ p.Description.Competition = competitionentry.Text;
+ p.Description.File = mediaFile;
+ p.Description.LocalGoals = (int) localSpinButton.Value;
+ p.Description.VisitorGoals = (int) visitorSpinButton.Value;
+ p.Description.MatchDate = DateTime.Parse (dateEntry.Text);
+ p.Description.Season = seasonentry.Text;
+ p.Description.LocalName = p.LocalTeamTemplate.TeamName;
+ p.Description.VisitorName = p.VisitorTeamTemplate.TeamName;
+
+ encSettings = new EncodingSettings();
+ captureSettings = new CaptureSettings();
+
+ encSettings.OutputFile = fileEntry.Text;
+ if (projectType == ProjectType.CaptureProject) {
+ captureSettings.CaptureSourceType =
videoDevices[devicecombobox.Active].DeviceType;
+ captureSettings.DeviceID = videoDevices[devicecombobox.Active].ID;
+ } else if (projectType == ProjectType.URICaptureProject) {
+ captureSettings.CaptureSourceType = CaptureSourceType.URI;
+ captureSettings.DeviceID = urientry.Text;
+ }
+
+ /* Get quality info */
+ qualitycombobox.GetActiveIter(out iter);
+ encSettings.EncodingQuality = (EncodingQuality) qualList.GetValue(iter, 1);
+
+ /* Get size info */
+ imagecombobox.GetActiveIter(out iter);
+ encSettings.VideoStandard = (VideoStandard) videoStandardList.GetValue(iter, 1);
+
+ /* Get encoding profile info */
+ encodingcombobox.GetActiveIter(out iter);
+ encSettings.EncodingProfile = (EncodingProfile) encProfileList.GetValue(iter, 1);
+
+ encSettings.Framerate_n = Config.FPS_N;
+ encSettings.Framerate_d = Config.FPS_D;
+
+ captureSettings.EncodingSettings = encSettings;
+
+ if (OpenNewProjectEvent != null) {
+ OpenNewProjectEvent (p, projectType, captureSettings);
+ }
+ }
+
+ void HandleBackClicked (object sender, EventArgs e)
+ {
+ if (notebook1.Page == PROJECT_TYPE) {
+ if (CancelEvent != null) {
+ CancelEvent ();
+ }
+ } else {
+ notebook1.Page --;
+ nextbutton.Visible = true;
+ createbutton.Visible = false;
+ }
+ }
+
+ void HandleNextClicked (object sender, EventArgs e)
+ {
+ if (notebook1.Page == PROJECT_TYPE) {
+ SetProjectType ();
+ }
+ notebook1.Page ++;
+ if (notebook1.Page == PROJECT_DETAILS) {
+ nextbutton.Visible = false;
+ createbutton.Visible = true;
+ }
+ }
+ }
+}
+
diff --git a/LongoMatch.GUI/Gui/Panel/OpenProjectPanel.cs b/LongoMatch.GUI/Gui/Panel/OpenProjectPanel.cs
new file mode 100644
index 0000000..c96483f
--- /dev/null
+++ b/LongoMatch.GUI/Gui/Panel/OpenProjectPanel.cs
@@ -0,0 +1,61 @@
+//
+// Copyright (C) 2014 Andoni Morales Alastruey
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+using System;
+using System.Collections.Generic;
+using Gtk;
+using LongoMatch.Handlers;
+using LongoMatch.Gui;
+using LongoMatch.Store;
+
+namespace LongoMatch.Gui.Panel
+{
+ [System.ComponentModel.ToolboxItem(true)]
+ public partial class OpenProjectPanel : Gtk.Bin
+ {
+ public event OpenProjectIDHandler OpenProjectEvent;
+ public event BackEventHandle BackEvent;
+
+ public OpenProjectPanel ()
+ {
+ this.Build ();
+
+ projectlistwidget.ProjectSelected += HandleProjectSelected;
+ projectlistwidget.SelectionMode = SelectionMode.Single;
+ backbutton.Clicked += HandleClicked;
+ }
+
+ public List<ProjectDescription> Projects{
+ set {
+ projectlistwidget.Fill (value);
+ }
+ }
+
+ void HandleClicked (object sender, EventArgs e)
+ {
+ if (BackEvent != null)
+ BackEvent ();
+ }
+
+ void HandleProjectSelected (ProjectDescription project)
+ {
+ if (OpenProjectEvent != null)
+ OpenProjectEvent (project.UUID);
+ }
+ }
+}
+
diff --git a/LongoMatch.GUI/Gui/Panel/WelcomePanel.cs b/LongoMatch.GUI/Gui/Panel/WelcomePanel.cs
new file mode 100644
index 0000000..756d2b8
--- /dev/null
+++ b/LongoMatch.GUI/Gui/Panel/WelcomePanel.cs
@@ -0,0 +1,44 @@
+//
+// Copyright (C) 2014 Andoni Morales Alastruey
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+using System;
+using LongoMatch.Handlers;
+using LongoMatch.Common;
+
+namespace LongoMatch.Gui.Panel
+{
+ [System.ComponentModel.ToolboxItem(true)]
+ public partial class WelcomePanel : Gtk.Bin
+ {
+ public WelcomePanel ()
+ {
+ this.Build ();
+ backgroundwidget.Background = Gdk.Pixbuf.LoadFromResource (Constants.BACKGROUND);
+ }
+
+ public void Bind (MainWindow window)
+ {
+ openbutton.Clicked += (sender, e) => {window.EmitOpenProject ();};
+ newbutton.Clicked += (sender, e) => {window.EmitNewProject ();};
+ teamsbutton.Clicked += (sender, e) => {window.EmitManageTeams ();};
+ sportsbutton.Clicked += (sender, e) => {window.EmitManageCategories ();};
+ preferencesbutton.Clicked += (sender, e) => {window.EmitEditPreferences ();};
+ projectsbutton.Clicked += (sender, e) => {window.EmitManageProjects ();};
+ }
+ }
+}
+
diff --git a/LongoMatch.GUI/LongoMatch.GUI.mdp b/LongoMatch.GUI/LongoMatch.GUI.mdp
index a3c4204..ffb40b7 100644
--- a/LongoMatch.GUI/LongoMatch.GUI.mdp
+++ b/LongoMatch.GUI/LongoMatch.GUI.mdp
@@ -202,6 +202,19 @@
<File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.ButtonTagger.cs" />
<File subtype="Code" buildaction="Compile" name="Gui/Component/AnalysisComponent.cs" />
<File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.AnalysisComponent.cs"
/>
+ <File subtype="Code" buildaction="EmbedAsResource" name="../images/background.svg" />
+ <File subtype="Directory" buildaction="Compile" name="Gui/Panel" />
+ <File subtype="Code" buildaction="Compile" name="Gui/Panel/WelcomePanel.cs" />
+ <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Panel.WelcomePanel.cs" />
+ <File subtype="Code" buildaction="Compile" name="Gui/Component/BackgroundWidget.cs" />
+ <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.BackgroundWidget.cs" />
+ <File subtype="Code" buildaction="EmbedAsResource" name="../images/background.png" />
+ <File subtype="Code" buildaction="Compile" name="Gui/Panel/OpenProjectPanel.cs" />
+ <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Panel.OpenProjectPanel.cs" />
+ <File subtype="Code" buildaction="Compile" name="Gui/Panel/NewProjectPanel.cs" />
+ <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs" />
+ <File subtype="Code" buildaction="Compile" name="Gui/Component/TeamPlayersSelection.cs" />
+ <File subtype="Code" buildaction="Compile"
name="gtk-gui/LongoMatch.Gui.Component.TeamPlayersSelection.cs" />
</Contents>
<References>
<ProjectReference type="Gac" localcopy="True" refto="atk-sharp, Version=2.12.0.0, Culture=neutral,
PublicKeyToken=35e10195dab3c99f" />
@@ -220,4 +233,4 @@
<ProjectReference type="Project" localcopy="True" refto="OxyPlotMono" />
</References>
<LanguageParameters ApplicationIcon="." CodePage="65001" ctype="CSharpProjectParameters" />
-</Project>
+</Project>
\ No newline at end of file
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.BackgroundWidget.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.BackgroundWidget.cs
new file mode 100644
index 0000000..2203834
--- /dev/null
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.BackgroundWidget.cs
@@ -0,0 +1,25 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+namespace LongoMatch.Gui.Component
+{
+ public partial class BackgroundWidget
+ {
+ private global::Gtk.DrawingArea drawingarea;
+
+ protected virtual void Build ()
+ {
+ global::Stetic.Gui.Initialize (this);
+ // Widget LongoMatch.Gui.Component.BackgroundWidget
+ global::Stetic.BinContainer.Attach (this);
+ this.Name = "LongoMatch.Gui.Component.BackgroundWidget";
+ // Container child
LongoMatch.Gui.Component.BackgroundWidget.Gtk.Container+ContainerChild
+ this.drawingarea = new global::Gtk.DrawingArea ();
+ this.drawingarea.Name = "drawingarea";
+ this.Add (this.drawingarea);
+ if ((this.Child != null)) {
+ this.Child.ShowAll ();
+ }
+ this.Hide ();
+ }
+ }
+}
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.DrawingToolBox.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.DrawingToolBox.cs
index 8feb7f2..54bfdc5 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.DrawingToolBox.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.DrawingToolBox.cs
@@ -58,6 +58,7 @@ namespace LongoMatch.Gui.Component
this.circlebutton = new global::Gtk.RadioButton ("");
this.circlebutton.CanFocus = true;
this.circlebutton.Name = "circlebutton";
+ this.circlebutton.Active = true;
this.circlebutton.DrawIndicator = false;
this.circlebutton.UseUnderline = true;
this.circlebutton.Group = new global::GLib.SList (global::System.IntPtr.Zero);
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectDetailsWidget.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectDetailsWidget.cs
index 13d2ffd..4a7872c 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectDetailsWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectDetailsWidget.cs
@@ -431,6 +431,7 @@ namespace LongoMatch.Gui.Component
this.expander1 = new global::Gtk.Expander (null);
this.expander1.CanFocus = true;
this.expander1.Name = "expander1";
+ this.expander1.Expanded = true;
// Container child expander1.Gtk.Container+ContainerChild
this.table2 = new global::Gtk.Table (((uint)(4)), ((uint)(2)), false);
this.table2.Name = "table2";
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectListWidget.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectListWidget.cs
index 15c5b86..1a26b07 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectListWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectListWidget.cs
@@ -9,7 +9,7 @@ namespace LongoMatch.Gui.Component
private global::Gtk.Label filterlabel;
private global::Gtk.Entry filterEntry;
private global::Gtk.ScrolledWindow scrolledwindow2;
- private global::Gtk.TreeView treeview;
+ private global::Gtk.IconView iconview;
protected virtual void Build ()
{
@@ -53,10 +53,10 @@ namespace LongoMatch.Gui.Component
this.scrolledwindow2.CanFocus = true;
this.scrolledwindow2.Name = "scrolledwindow2";
// Container child scrolledwindow2.Gtk.Container+ContainerChild
- this.treeview = new global::Gtk.TreeView ();
- this.treeview.CanFocus = true;
- this.treeview.Name = "treeview";
- this.scrolledwindow2.Add (this.treeview);
+ this.iconview = new global::Gtk.IconView ();
+ this.iconview.CanFocus = true;
+ this.iconview.Name = "iconview";
+ this.scrolledwindow2.Add (this.iconview);
this.vbox2.Add (this.scrolledwindow2);
global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox2
[this.scrolledwindow2]));
w5.Position = 1;
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.Stats.Plotter.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.Stats.Plotter.cs
index ad9cc26..9d59a08 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.Stats.Plotter.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.Stats.Plotter.cs
@@ -31,6 +31,7 @@ namespace LongoMatch.Gui.Component.Stats
this.historadiobutton = new global::Gtk.RadioButton
(global::Mono.Unix.Catalog.GetString ("Histogram"));
this.historadiobutton.CanFocus = true;
this.historadiobutton.Name = "historadiobutton";
+ this.historadiobutton.Active = true;
this.historadiobutton.DrawIndicator = true;
this.historadiobutton.UseUnderline = true;
this.historadiobutton.Group = new global::GLib.SList (global::System.IntPtr.Zero);
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TeamPlayersSelection.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TeamPlayersSelection.cs
new file mode 100644
index 0000000..2c22e2b
--- /dev/null
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TeamPlayersSelection.cs
@@ -0,0 +1,76 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+namespace LongoMatch.Gui.Component
+{
+ public partial class TeamPlayersSelection
+ {
+ private global::Gtk.VBox vbox4;
+ private global::Gtk.HBox hbox4;
+ private global::Gtk.Image shieldimage;
+ private global::Gtk.Label namelabel;
+ private global::Gtk.ComboBox teamscombobox;
+ private global::Gtk.ScrolledWindow GtkScrolledWindow;
+ private global::Gtk.IconView playersiconview;
+
+ protected virtual void Build ()
+ {
+ global::Stetic.Gui.Initialize (this);
+ // Widget LongoMatch.Gui.Component.TeamPlayersSelection
+ global::Stetic.BinContainer.Attach (this);
+ this.Name = "LongoMatch.Gui.Component.TeamPlayersSelection";
+ // Container child
LongoMatch.Gui.Component.TeamPlayersSelection.Gtk.Container+ContainerChild
+ this.vbox4 = new global::Gtk.VBox ();
+ this.vbox4.Name = "vbox4";
+ this.vbox4.Spacing = 6;
+ // Container child vbox4.Gtk.Box+BoxChild
+ this.hbox4 = new global::Gtk.HBox ();
+ this.hbox4.Name = "hbox4";
+ this.hbox4.Spacing = 6;
+ // Container child hbox4.Gtk.Box+BoxChild
+ this.shieldimage = new global::Gtk.Image ();
+ this.shieldimage.Name = "shieldimage";
+ this.shieldimage.Pixbuf = global::Gdk.Pixbuf.LoadFromResource ("logo.svg");
+ this.hbox4.Add (this.shieldimage);
+ global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.hbox4
[this.shieldimage]));
+ w1.Position = 0;
+ w1.Fill = false;
+ // Container child hbox4.Gtk.Box+BoxChild
+ this.namelabel = new global::Gtk.Label ();
+ this.namelabel.Name = "namelabel";
+ this.hbox4.Add (this.namelabel);
+ global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox4
[this.namelabel]));
+ w2.Position = 1;
+ // Container child hbox4.Gtk.Box+BoxChild
+ this.teamscombobox = global::Gtk.ComboBox.NewText ();
+ this.teamscombobox.Name = "teamscombobox";
+ this.hbox4.Add (this.teamscombobox);
+ global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox4
[this.teamscombobox]));
+ w3.Position = 2;
+ w3.Expand = false;
+ w3.Fill = false;
+ this.vbox4.Add (this.hbox4);
+ global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox4 [this.hbox4]));
+ w4.Position = 0;
+ w4.Expand = false;
+ w4.Fill = false;
+ // Container child vbox4.Gtk.Box+BoxChild
+ this.GtkScrolledWindow = new global::Gtk.ScrolledWindow ();
+ this.GtkScrolledWindow.Name = "GtkScrolledWindow";
+ this.GtkScrolledWindow.ShadowType = ((global::Gtk.ShadowType)(1));
+ // Container child GtkScrolledWindow.Gtk.Container+ContainerChild
+ this.playersiconview = new global::Gtk.IconView ();
+ this.playersiconview.CanFocus = true;
+ this.playersiconview.Name = "playersiconview";
+ this.playersiconview.SelectionMode = ((global::Gtk.SelectionMode)(0));
+ this.GtkScrolledWindow.Add (this.playersiconview);
+ this.vbox4.Add (this.GtkScrolledWindow);
+ global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox4
[this.GtkScrolledWindow]));
+ w6.Position = 1;
+ this.Add (this.vbox4);
+ if ((this.Child != null)) {
+ this.Child.ShowAll ();
+ }
+ this.Hide ();
+ }
+ }
+}
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.BusyDialog.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.BusyDialog.cs
index 8e8beff..fac81de 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.BusyDialog.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.BusyDialog.cs
@@ -15,7 +15,8 @@ namespace LongoMatch.Gui.Dialog
this.Name = "LongoMatch.Gui.Dialog.BusyDialog";
this.Title = "";
this.Icon = global::Stetic.IconLoader.LoadIcon (this, "longomatch",
global::Gtk.IconSize.Menu);
- this.WindowPosition = ((global::Gtk.WindowPosition)(4));
+ this.TypeHint = ((global::Gdk.WindowTypeHint)(1));
+ this.WindowPosition = ((global::Gtk.WindowPosition)(1));
this.Modal = true;
this.Resizable = false;
this.AllowGrow = false;
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.ProjectSelectionDialog.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.ProjectSelectionDialog.cs
index 47ae7d8..46a1e31 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.ProjectSelectionDialog.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.ProjectSelectionDialog.cs
@@ -48,7 +48,6 @@ namespace LongoMatch.Gui.Dialog
this.fromfileradiobutton = new global::Gtk.RadioButton
(global::Mono.Unix.Catalog.GetString ("New project using a video file"));
this.fromfileradiobutton.CanFocus = true;
this.fromfileradiobutton.Name = "fromfileradiobutton";
- this.fromfileradiobutton.Active = true;
this.fromfileradiobutton.DrawIndicator = true;
this.fromfileradiobutton.UseUnderline = true;
this.fromfileradiobutton.FocusOnClick = false;
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.MainWindow.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.MainWindow.cs
index e8b7286..da25c3a 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.MainWindow.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.MainWindow.cs
@@ -43,6 +43,7 @@ namespace LongoMatch.Gui
private global::Gtk.VBox menubox;
private global::Gtk.MenuBar menubar1;
private global::Gtk.HBox centralbox;
+ private global::LongoMatch.Gui.Panel.WelcomePanel welcomepanel1;
private global::Gtk.Statusbar statusbar1;
private global::LongoMatch.Gui.Component.RenderingStateBar renderingstatebar1;
@@ -202,9 +203,16 @@ namespace LongoMatch.Gui
this.centralbox = new global::Gtk.HBox ();
this.centralbox.Name = "centralbox";
this.centralbox.Spacing = 6;
+ // Container child centralbox.Gtk.Box+BoxChild
+ this.welcomepanel1 = new global::LongoMatch.Gui.Panel.WelcomePanel ();
+ this.welcomepanel1.Events = ((global::Gdk.EventMask)(256));
+ this.welcomepanel1.Name = "welcomepanel1";
+ this.centralbox.Add (this.welcomepanel1);
+ global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.centralbox
[this.welcomepanel1]));
+ w4.Position = 0;
this.vbox1.Add (this.centralbox);
- global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox1
[this.centralbox]));
- w4.Position = 1;
+ global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox1
[this.centralbox]));
+ w5.Position = 1;
// Container child vbox1.Gtk.Box+BoxChild
this.statusbar1 = new global::Gtk.Statusbar ();
this.statusbar1.Name = "statusbar1";
@@ -215,21 +223,21 @@ namespace LongoMatch.Gui
this.renderingstatebar1.Name = "renderingstatebar1";
this.renderingstatebar1.Fraction = 0;
this.statusbar1.Add (this.renderingstatebar1);
- global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.statusbar1
[this.renderingstatebar1]));
- w5.Position = 2;
- w5.Expand = false;
- w5.Fill = false;
- this.vbox1.Add (this.statusbar1);
- global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox1
[this.statusbar1]));
+ global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.statusbar1
[this.renderingstatebar1]));
w6.Position = 2;
w6.Expand = false;
w6.Fill = false;
+ this.vbox1.Add (this.statusbar1);
+ global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.vbox1
[this.statusbar1]));
+ w7.Position = 2;
+ w7.Expand = false;
+ w7.Fill = false;
this.Add (this.vbox1);
if ((this.Child != null)) {
this.Child.ShowAll ();
}
- this.DefaultWidth = 1503;
- this.DefaultHeight = 686;
+ this.DefaultWidth = 938;
+ this.DefaultHeight = 604;
this.renderingstatebar1.Hide ();
this.Show ();
this.NewPojectAction.Activated += new global::System.EventHandler
(this.OnNewActivated);
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs
new file mode 100644
index 0000000..59deb26
--- /dev/null
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs
@@ -0,0 +1,839 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+namespace LongoMatch.Gui.Panel
+{
+ public partial class NewProjectPanel
+ {
+ private global::Gtk.VBox vbox2;
+ private global::Gtk.HBox hbox3;
+ private global::LongoMatch.Gui.Component.BackgroundWidget backgroundwidget;
+ private global::Gtk.Notebook notebook1;
+ private global::Gtk.VBox vbox3;
+ private global::Gtk.Label label6;
+ private global::Gtk.HSeparator hseparator1;
+ private global::Gtk.HBox hbox1;
+ private global::Gtk.RadioButton fromfileradiobutton;
+ private global::Gtk.Image image61;
+ private global::Gtk.HBox hbox2;
+ private global::Gtk.RadioButton liveradiobutton;
+ private global::Gtk.Image image63;
+ private global::Gtk.HBox hbox4;
+ private global::Gtk.RadioButton fakeliveradiobutton;
+ private global::Gtk.Image image62;
+ private global::Gtk.HBox ipcamerabox;
+ private global::Gtk.RadioButton uriliveradiobutton;
+ private global::Gtk.Image image64;
+ private global::Gtk.Label label1;
+ private global::Gtk.VBox vbox4;
+ private global::Gtk.Label label4;
+ private global::Gtk.HSeparator hseparator2;
+ private global::Gtk.Table table1;
+ private global::Gtk.Entry competitionentry;
+ private global::Gtk.Label Competitionlabel;
+ private global::Gtk.HBox hbox5;
+ private global::Gtk.Entry dateEntry;
+ private global::Gtk.Button calendarbutton;
+ private global::Gtk.HBox hbox9;
+ private global::Gtk.SpinButton localSpinButton;
+ private global::Gtk.Label label2;
+ private global::Gtk.SpinButton visitorSpinButton;
+ private global::Gtk.Label label11;
+ private global::Gtk.Label label5;
+ private global::Gtk.Label label9;
+ private global::Gtk.Entry seasonentry;
+ private global::Gtk.Label seasonlabel;
+ private global::Gtk.ComboBox tagscombobox;
+ private global::Gtk.HSeparator hseparator3;
+ private global::Gtk.Table filetable;
+ private global::Gtk.HBox filehbox;
+ private global::Gtk.Entry fileEntry;
+ private global::Gtk.Button openbutton;
+ private global::Gtk.Label filelabel;
+ private global::Gtk.Table outputfiletable;
+ private global::Gtk.HBox outputfilehbox1;
+ private global::Gtk.Entry outfileEntry;
+ private global::Gtk.Button savebutton;
+ private global::Gtk.Label outputfilelabel;
+ private global::Gtk.Table capturetable;
+ private global::Gtk.ComboBox encodingcombobox;
+ private global::Gtk.HBox hbox6;
+ private global::Gtk.Label device;
+ private global::Gtk.Label urilabel;
+ private global::Gtk.HBox hbox7;
+ private global::Gtk.ComboBox devicecombobox;
+ private global::Gtk.Entry urientry;
+ private global::Gtk.ComboBox imagecombobox;
+ private global::Gtk.ComboBox qualitycombobox;
+ private global::Gtk.Label qualitylabel;
+ private global::Gtk.Label sizelabel;
+ private global::Gtk.Label videoformatlabel;
+ private global::Gtk.HBox hbox8;
+ private global::Gtk.Frame frame1;
+ private global::Gtk.Alignment GtkAlignment6;
+ private global::LongoMatch.Gui.Component.TeamPlayersSelection localteamplayersselection;
+ private global::Gtk.Label GtkLabel10;
+ private global::Gtk.Frame frame2;
+ private global::Gtk.Alignment GtkAlignment7;
+ private global::LongoMatch.Gui.Component.TeamPlayersSelection awayteamplayersselection;
+ private global::Gtk.Label GtkLabel11;
+ private global::Gtk.Label label3;
+ private global::Gtk.HButtonBox hbuttonbox2;
+ private global::Gtk.Button backbutton;
+ private global::Gtk.Button nextbutton;
+ private global::Gtk.Button createbutton;
+
+ protected virtual void Build ()
+ {
+ global::Stetic.Gui.Initialize (this);
+ // Widget LongoMatch.Gui.Panel.NewProjectPanel
+ global::Stetic.BinContainer.Attach (this);
+ this.Name = "LongoMatch.Gui.Panel.NewProjectPanel";
+ // Container child LongoMatch.Gui.Panel.NewProjectPanel.Gtk.Container+ContainerChild
+ this.vbox2 = new global::Gtk.VBox ();
+ this.vbox2.Name = "vbox2";
+ this.vbox2.Spacing = 6;
+ // Container child vbox2.Gtk.Box+BoxChild
+ this.hbox3 = new global::Gtk.HBox ();
+ this.hbox3.Name = "hbox3";
+ this.hbox3.Spacing = 6;
+ // Container child hbox3.Gtk.Box+BoxChild
+ this.backgroundwidget = new global::LongoMatch.Gui.Component.BackgroundWidget ();
+ this.backgroundwidget.Events = ((global::Gdk.EventMask)(256));
+ this.backgroundwidget.Name = "backgroundwidget";
+ this.hbox3.Add (this.backgroundwidget);
+ global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.hbox3
[this.backgroundwidget]));
+ w1.Position = 0;
+ w1.Expand = false;
+ // Container child hbox3.Gtk.Box+BoxChild
+ this.notebook1 = new global::Gtk.Notebook ();
+ this.notebook1.CanFocus = true;
+ this.notebook1.Name = "notebook1";
+ this.notebook1.CurrentPage = 1;
+ this.notebook1.ShowBorder = false;
+ this.notebook1.Scrollable = true;
+ // Container child notebook1.Gtk.Notebook+NotebookChild
+ this.vbox3 = new global::Gtk.VBox ();
+ this.vbox3.Name = "vbox3";
+ this.vbox3.Spacing = 6;
+ // Container child vbox3.Gtk.Box+BoxChild
+ this.label6 = new global::Gtk.Label ();
+ this.label6.Name = "label6";
+ this.label6.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Select new project
type</b>");
+ this.label6.UseMarkup = true;
+ this.label6.Justify = ((global::Gtk.Justification)(2));
+ this.vbox3.Add (this.label6);
+ global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.label6]));
+ w2.Position = 0;
+ w2.Expand = false;
+ w2.Fill = false;
+ w2.Padding = ((uint)(30));
+ // Container child vbox3.Gtk.Box+BoxChild
+ this.hseparator1 = new global::Gtk.HSeparator ();
+ this.hseparator1.Name = "hseparator1";
+ this.vbox3.Add (this.hseparator1);
+ global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox3
[this.hseparator1]));
+ w3.Position = 1;
+ w3.Expand = false;
+ w3.Fill = false;
+ // Container child vbox3.Gtk.Box+BoxChild
+ this.hbox1 = new global::Gtk.HBox ();
+ this.hbox1.Name = "hbox1";
+ this.hbox1.Spacing = 6;
+ // Container child hbox1.Gtk.Box+BoxChild
+ this.fromfileradiobutton = new global::Gtk.RadioButton
(global::Mono.Unix.Catalog.GetString ("New project using a video file"));
+ this.fromfileradiobutton.CanFocus = true;
+ this.fromfileradiobutton.Name = "fromfileradiobutton";
+ this.fromfileradiobutton.DrawIndicator = true;
+ this.fromfileradiobutton.UseUnderline = true;
+ this.fromfileradiobutton.FocusOnClick = false;
+ this.fromfileradiobutton.Group = new global::GLib.SList (global::System.IntPtr.Zero);
+ this.hbox1.Add (this.fromfileradiobutton);
+ global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.hbox1
[this.fromfileradiobutton]));
+ w4.Position = 0;
+ // Container child hbox1.Gtk.Box+BoxChild
+ this.image61 = new global::Gtk.Image ();
+ this.image61.Name = "image61";
+ this.image61.Pixbuf = global::Gdk.Pixbuf.LoadFromResource ("video.png");
+ this.hbox1.Add (this.image61);
+ global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.image61]));
+ w5.Position = 1;
+ this.vbox3.Add (this.hbox1);
+ global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.hbox1]));
+ w6.Position = 2;
+ // Container child vbox3.Gtk.Box+BoxChild
+ this.hbox2 = new global::Gtk.HBox ();
+ this.hbox2.Name = "hbox2";
+ this.hbox2.Spacing = 6;
+ // Container child hbox2.Gtk.Box+BoxChild
+ this.liveradiobutton = new global::Gtk.RadioButton
(global::Mono.Unix.Catalog.GetString ("Live project using a capture device"));
+ this.liveradiobutton.CanFocus = true;
+ this.liveradiobutton.Name = "liveradiobutton";
+ this.liveradiobutton.DrawIndicator = true;
+ this.liveradiobutton.UseUnderline = true;
+ this.liveradiobutton.Group = this.fromfileradiobutton.Group;
+ this.hbox2.Add (this.liveradiobutton);
+ global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.hbox2
[this.liveradiobutton]));
+ w7.Position = 0;
+ // Container child hbox2.Gtk.Box+BoxChild
+ this.image63 = new global::Gtk.Image ();
+ this.image63.Name = "image63";
+ this.image63.Pixbuf = global::Gdk.Pixbuf.LoadFromResource ("camera-video.png");
+ this.hbox2.Add (this.image63);
+ global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.image63]));
+ w8.Position = 1;
+ this.vbox3.Add (this.hbox2);
+ global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.hbox2]));
+ w9.Position = 3;
+ // Container child vbox3.Gtk.Box+BoxChild
+ this.hbox4 = new global::Gtk.HBox ();
+ this.hbox4.Name = "hbox4";
+ this.hbox4.Spacing = 6;
+ // Container child hbox4.Gtk.Box+BoxChild
+ this.fakeliveradiobutton = new global::Gtk.RadioButton
(global::Mono.Unix.Catalog.GetString ("Live project using a fake capture device"));
+ this.fakeliveradiobutton.CanFocus = true;
+ this.fakeliveradiobutton.Name = "fakeliveradiobutton";
+ this.fakeliveradiobutton.DrawIndicator = true;
+ this.fakeliveradiobutton.UseUnderline = true;
+ this.fakeliveradiobutton.Group = this.fromfileradiobutton.Group;
+ this.hbox4.Add (this.fakeliveradiobutton);
+ global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.hbox4
[this.fakeliveradiobutton]));
+ w10.Position = 0;
+ // Container child hbox4.Gtk.Box+BoxChild
+ this.image62 = new global::Gtk.Image ();
+ this.image62.Name = "image62";
+ this.image62.Pixbuf = global::Gdk.Pixbuf.LoadFromResource ("camera-video.png");
+ this.hbox4.Add (this.image62);
+ global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.hbox4
[this.image62]));
+ w11.Position = 1;
+ this.vbox3.Add (this.hbox4);
+ global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.hbox4]));
+ w12.Position = 4;
+ // Container child vbox3.Gtk.Box+BoxChild
+ this.ipcamerabox = new global::Gtk.HBox ();
+ this.ipcamerabox.Name = "ipcamerabox";
+ this.ipcamerabox.Spacing = 6;
+ // Container child ipcamerabox.Gtk.Box+BoxChild
+ this.uriliveradiobutton = new global::Gtk.RadioButton
(global::Mono.Unix.Catalog.GetString ("Live project using an IP camera"));
+ this.uriliveradiobutton.CanFocus = true;
+ this.uriliveradiobutton.Name = "uriliveradiobutton";
+ this.uriliveradiobutton.DrawIndicator = true;
+ this.uriliveradiobutton.UseUnderline = true;
+ this.uriliveradiobutton.Group = this.fromfileradiobutton.Group;
+ this.ipcamerabox.Add (this.uriliveradiobutton);
+ global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.ipcamerabox
[this.uriliveradiobutton]));
+ w13.Position = 0;
+ // Container child ipcamerabox.Gtk.Box+BoxChild
+ this.image64 = new global::Gtk.Image ();
+ this.image64.Name = "image64";
+ this.image64.Pixbuf = global::Gdk.Pixbuf.LoadFromResource ("camera-video.png");
+ this.ipcamerabox.Add (this.image64);
+ global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.ipcamerabox
[this.image64]));
+ w14.Position = 1;
+ this.vbox3.Add (this.ipcamerabox);
+ global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.vbox3
[this.ipcamerabox]));
+ w15.Position = 5;
+ this.notebook1.Add (this.vbox3);
+ // Notebook tab
+ this.label1 = new global::Gtk.Label ();
+ this.label1.Name = "label1";
+ this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("page1");
+ this.notebook1.SetTabLabel (this.vbox3, this.label1);
+ this.label1.ShowAll ();
+ // Container child notebook1.Gtk.Notebook+NotebookChild
+ this.vbox4 = new global::Gtk.VBox ();
+ this.vbox4.Name = "vbox4";
+ this.vbox4.Spacing = 6;
+ // Container child vbox4.Gtk.Box+BoxChild
+ this.label4 = new global::Gtk.Label ();
+ this.label4.Name = "label4";
+ this.label4.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Project
properties</b>");
+ this.label4.UseMarkup = true;
+ this.label4.Justify = ((global::Gtk.Justification)(2));
+ this.vbox4.Add (this.label4);
+ global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.vbox4 [this.label4]));
+ w17.Position = 0;
+ w17.Expand = false;
+ w17.Padding = ((uint)(20));
+ // Container child vbox4.Gtk.Box+BoxChild
+ this.hseparator2 = new global::Gtk.HSeparator ();
+ this.hseparator2.Name = "hseparator2";
+ this.vbox4.Add (this.hseparator2);
+ global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.vbox4
[this.hseparator2]));
+ w18.Position = 1;
+ w18.Expand = false;
+ w18.Fill = false;
+ // Container child vbox4.Gtk.Box+BoxChild
+ this.table1 = new global::Gtk.Table (((uint)(3)), ((uint)(4)), true);
+ this.table1.Name = "table1";
+ this.table1.RowSpacing = ((uint)(6));
+ this.table1.ColumnSpacing = ((uint)(6));
+ // Container child table1.Gtk.Table+TableChild
+ this.competitionentry = new global::Gtk.Entry ();
+ this.competitionentry.CanFocus = true;
+ this.competitionentry.Name = "competitionentry";
+ this.competitionentry.IsEditable = true;
+ this.competitionentry.InvisibleChar = '●';
+ this.table1.Add (this.competitionentry);
+ global::Gtk.Table.TableChild w19 = ((global::Gtk.Table.TableChild)(this.table1
[this.competitionentry]));
+ w19.LeftAttach = ((uint)(3));
+ w19.RightAttach = ((uint)(4));
+ w19.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.Competitionlabel = new global::Gtk.Label ();
+ this.Competitionlabel.Name = "Competitionlabel";
+ this.Competitionlabel.LabelProp = global::Mono.Unix.Catalog.GetString
("Competition:");
+ this.table1.Add (this.Competitionlabel);
+ global::Gtk.Table.TableChild w20 = ((global::Gtk.Table.TableChild)(this.table1
[this.Competitionlabel]));
+ w20.LeftAttach = ((uint)(2));
+ w20.RightAttach = ((uint)(3));
+ w20.XOptions = ((global::Gtk.AttachOptions)(4));
+ w20.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.hbox5 = new global::Gtk.HBox ();
+ this.hbox5.Name = "hbox5";
+ // Container child hbox5.Gtk.Box+BoxChild
+ this.dateEntry = new global::Gtk.Entry ();
+ this.dateEntry.CanFocus = true;
+ this.dateEntry.Name = "dateEntry";
+ this.dateEntry.IsEditable = false;
+ this.dateEntry.InvisibleChar = '●';
+ this.hbox5.Add (this.dateEntry);
+ global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.hbox5
[this.dateEntry]));
+ w21.Position = 0;
+ // Container child hbox5.Gtk.Box+BoxChild
+ this.calendarbutton = new global::Gtk.Button ();
+ this.calendarbutton.CanFocus = true;
+ this.calendarbutton.Name = "calendarbutton";
+ this.calendarbutton.UseUnderline = true;
+ // Container child calendarbutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w22 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ global::Gtk.HBox w23 = new global::Gtk.HBox ();
+ w23.Spacing = 2;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w24 = new global::Gtk.Image ();
+ w24.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "stock_calendar",
global::Gtk.IconSize.Button);
+ w23.Add (w24);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w26 = new global::Gtk.Label ();
+ w26.LabelProp = global::Mono.Unix.Catalog.GetString ("_Calendar");
+ w26.UseUnderline = true;
+ w23.Add (w26);
+ w22.Add (w23);
+ this.calendarbutton.Add (w22);
+ this.hbox5.Add (this.calendarbutton);
+ global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.hbox5
[this.calendarbutton]));
+ w30.Position = 1;
+ w30.Expand = false;
+ w30.Fill = false;
+ this.table1.Add (this.hbox5);
+ global::Gtk.Table.TableChild w31 = ((global::Gtk.Table.TableChild)(this.table1
[this.hbox5]));
+ w31.TopAttach = ((uint)(1));
+ w31.BottomAttach = ((uint)(2));
+ w31.LeftAttach = ((uint)(3));
+ w31.RightAttach = ((uint)(4));
+ w31.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.hbox9 = new global::Gtk.HBox ();
+ this.hbox9.Name = "hbox9";
+ this.hbox9.Spacing = 6;
+ // Container child hbox9.Gtk.Box+BoxChild
+ this.localSpinButton = new global::Gtk.SpinButton (0, 1000, 1);
+ this.localSpinButton.CanFocus = true;
+ this.localSpinButton.Name = "localSpinButton";
+ this.localSpinButton.Adjustment.PageIncrement = 10;
+ this.localSpinButton.ClimbRate = 1;
+ this.localSpinButton.Numeric = true;
+ this.hbox9.Add (this.localSpinButton);
+ global::Gtk.Box.BoxChild w32 = ((global::Gtk.Box.BoxChild)(this.hbox9
[this.localSpinButton]));
+ w32.Position = 0;
+ w32.Fill = false;
+ // Container child hbox9.Gtk.Box+BoxChild
+ this.label2 = new global::Gtk.Label ();
+ this.label2.Name = "label2";
+ this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("-");
+ this.hbox9.Add (this.label2);
+ global::Gtk.Box.BoxChild w33 = ((global::Gtk.Box.BoxChild)(this.hbox9 [this.label2]));
+ w33.Position = 1;
+ w33.Expand = false;
+ w33.Fill = false;
+ // Container child hbox9.Gtk.Box+BoxChild
+ this.visitorSpinButton = new global::Gtk.SpinButton (0, 1000, 1);
+ this.visitorSpinButton.CanFocus = true;
+ this.visitorSpinButton.Name = "visitorSpinButton";
+ this.visitorSpinButton.Adjustment.PageIncrement = 10;
+ this.visitorSpinButton.ClimbRate = 1;
+ this.visitorSpinButton.Numeric = true;
+ this.hbox9.Add (this.visitorSpinButton);
+ global::Gtk.Box.BoxChild w34 = ((global::Gtk.Box.BoxChild)(this.hbox9
[this.visitorSpinButton]));
+ w34.Position = 2;
+ w34.Fill = false;
+ this.table1.Add (this.hbox9);
+ global::Gtk.Table.TableChild w35 = ((global::Gtk.Table.TableChild)(this.table1
[this.hbox9]));
+ w35.TopAttach = ((uint)(1));
+ w35.BottomAttach = ((uint)(2));
+ w35.LeftAttach = ((uint)(1));
+ w35.RightAttach = ((uint)(2));
+ w35.XOptions = ((global::Gtk.AttachOptions)(4));
+ w35.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.label11 = new global::Gtk.Label ();
+ this.label11.Name = "label11";
+ this.label11.LabelProp = global::Mono.Unix.Catalog.GetString ("Score:");
+ this.table1.Add (this.label11);
+ global::Gtk.Table.TableChild w36 = ((global::Gtk.Table.TableChild)(this.table1
[this.label11]));
+ w36.TopAttach = ((uint)(1));
+ w36.BottomAttach = ((uint)(2));
+ w36.XOptions = ((global::Gtk.AttachOptions)(4));
+ w36.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.label5 = new global::Gtk.Label ();
+ this.label5.Name = "label5";
+ this.label5.LabelProp = global::Mono.Unix.Catalog.GetString ("Date:");
+ this.table1.Add (this.label5);
+ global::Gtk.Table.TableChild w37 = ((global::Gtk.Table.TableChild)(this.table1
[this.label5]));
+ w37.TopAttach = ((uint)(1));
+ w37.BottomAttach = ((uint)(2));
+ w37.LeftAttach = ((uint)(2));
+ w37.RightAttach = ((uint)(3));
+ w37.XOptions = ((global::Gtk.AttachOptions)(4));
+ w37.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.label9 = new global::Gtk.Label ();
+ this.label9.Name = "label9";
+ this.label9.LabelProp = global::Mono.Unix.Catalog.GetString ("Analisys Template:");
+ this.table1.Add (this.label9);
+ global::Gtk.Table.TableChild w38 = ((global::Gtk.Table.TableChild)(this.table1
[this.label9]));
+ w38.TopAttach = ((uint)(2));
+ w38.BottomAttach = ((uint)(3));
+ w38.XOptions = ((global::Gtk.AttachOptions)(4));
+ w38.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.seasonentry = new global::Gtk.Entry ();
+ this.seasonentry.CanFocus = true;
+ this.seasonentry.Name = "seasonentry";
+ this.seasonentry.IsEditable = true;
+ this.seasonentry.InvisibleChar = '●';
+ this.table1.Add (this.seasonentry);
+ global::Gtk.Table.TableChild w39 = ((global::Gtk.Table.TableChild)(this.table1
[this.seasonentry]));
+ w39.LeftAttach = ((uint)(1));
+ w39.RightAttach = ((uint)(2));
+ w39.XOptions = ((global::Gtk.AttachOptions)(4));
+ w39.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.seasonlabel = new global::Gtk.Label ();
+ this.seasonlabel.Name = "seasonlabel";
+ this.seasonlabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Season:");
+ this.table1.Add (this.seasonlabel);
+ global::Gtk.Table.TableChild w40 = ((global::Gtk.Table.TableChild)(this.table1
[this.seasonlabel]));
+ w40.XOptions = ((global::Gtk.AttachOptions)(4));
+ w40.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.tagscombobox = global::Gtk.ComboBox.NewText ();
+ this.tagscombobox.Name = "tagscombobox";
+ this.table1.Add (this.tagscombobox);
+ global::Gtk.Table.TableChild w41 = ((global::Gtk.Table.TableChild)(this.table1
[this.tagscombobox]));
+ w41.TopAttach = ((uint)(2));
+ w41.BottomAttach = ((uint)(3));
+ w41.LeftAttach = ((uint)(1));
+ w41.RightAttach = ((uint)(2));
+ w41.XOptions = ((global::Gtk.AttachOptions)(4));
+ w41.YOptions = ((global::Gtk.AttachOptions)(4));
+ this.vbox4.Add (this.table1);
+ global::Gtk.Box.BoxChild w42 = ((global::Gtk.Box.BoxChild)(this.vbox4 [this.table1]));
+ w42.Position = 2;
+ w42.Expand = false;
+ w42.Fill = false;
+ // Container child vbox4.Gtk.Box+BoxChild
+ this.hseparator3 = new global::Gtk.HSeparator ();
+ this.hseparator3.Name = "hseparator3";
+ this.vbox4.Add (this.hseparator3);
+ global::Gtk.Box.BoxChild w43 = ((global::Gtk.Box.BoxChild)(this.vbox4
[this.hseparator3]));
+ w43.Position = 3;
+ w43.Expand = false;
+ w43.Fill = false;
+ // Container child vbox4.Gtk.Box+BoxChild
+ this.filetable = new global::Gtk.Table (((uint)(1)), ((uint)(4)), true);
+ this.filetable.Name = "filetable";
+ this.filetable.RowSpacing = ((uint)(6));
+ this.filetable.ColumnSpacing = ((uint)(6));
+ // Container child filetable.Gtk.Table+TableChild
+ this.filehbox = new global::Gtk.HBox ();
+ this.filehbox.Name = "filehbox";
+ this.filehbox.Spacing = 6;
+ // Container child filehbox.Gtk.Box+BoxChild
+ this.fileEntry = new global::Gtk.Entry ();
+ this.fileEntry.CanFocus = true;
+ this.fileEntry.Name = "fileEntry";
+ this.fileEntry.IsEditable = false;
+ this.fileEntry.HasFrame = false;
+ this.fileEntry.InvisibleChar = '●';
+ this.filehbox.Add (this.fileEntry);
+ global::Gtk.Box.BoxChild w44 = ((global::Gtk.Box.BoxChild)(this.filehbox
[this.fileEntry]));
+ w44.Position = 0;
+ // Container child filehbox.Gtk.Box+BoxChild
+ this.openbutton = new global::Gtk.Button ();
+ this.openbutton.CanFocus = true;
+ this.openbutton.Name = "openbutton";
+ this.openbutton.UseStock = true;
+ this.openbutton.UseUnderline = true;
+ this.openbutton.Label = "gtk-open";
+ this.filehbox.Add (this.openbutton);
+ global::Gtk.Box.BoxChild w45 = ((global::Gtk.Box.BoxChild)(this.filehbox
[this.openbutton]));
+ w45.Position = 1;
+ w45.Expand = false;
+ this.filetable.Add (this.filehbox);
+ global::Gtk.Table.TableChild w46 = ((global::Gtk.Table.TableChild)(this.filetable
[this.filehbox]));
+ w46.LeftAttach = ((uint)(1));
+ w46.RightAttach = ((uint)(2));
+ w46.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child filetable.Gtk.Table+TableChild
+ this.filelabel = new global::Gtk.Label ();
+ this.filelabel.Name = "filelabel";
+ this.filelabel.LabelProp = global::Mono.Unix.Catalog.GetString ("File:");
+ this.filetable.Add (this.filelabel);
+ global::Gtk.Table.TableChild w47 = ((global::Gtk.Table.TableChild)(this.filetable
[this.filelabel]));
+ w47.XOptions = ((global::Gtk.AttachOptions)(4));
+ w47.YOptions = ((global::Gtk.AttachOptions)(4));
+ this.vbox4.Add (this.filetable);
+ global::Gtk.Box.BoxChild w48 = ((global::Gtk.Box.BoxChild)(this.vbox4
[this.filetable]));
+ w48.Position = 4;
+ w48.Expand = false;
+ w48.Fill = false;
+ // Container child vbox4.Gtk.Box+BoxChild
+ this.outputfiletable = new global::Gtk.Table (((uint)(1)), ((uint)(4)), true);
+ this.outputfiletable.Name = "outputfiletable";
+ this.outputfiletable.RowSpacing = ((uint)(6));
+ this.outputfiletable.ColumnSpacing = ((uint)(6));
+ // Container child outputfiletable.Gtk.Table+TableChild
+ this.outputfilehbox1 = new global::Gtk.HBox ();
+ this.outputfilehbox1.Name = "outputfilehbox1";
+ this.outputfilehbox1.Spacing = 6;
+ // Container child outputfilehbox1.Gtk.Box+BoxChild
+ this.outfileEntry = new global::Gtk.Entry ();
+ this.outfileEntry.CanFocus = true;
+ this.outfileEntry.Name = "outfileEntry";
+ this.outfileEntry.IsEditable = false;
+ this.outfileEntry.HasFrame = false;
+ this.outfileEntry.InvisibleChar = '●';
+ this.outputfilehbox1.Add (this.outfileEntry);
+ global::Gtk.Box.BoxChild w49 = ((global::Gtk.Box.BoxChild)(this.outputfilehbox1
[this.outfileEntry]));
+ w49.Position = 0;
+ // Container child outputfilehbox1.Gtk.Box+BoxChild
+ this.savebutton = new global::Gtk.Button ();
+ this.savebutton.CanFocus = true;
+ this.savebutton.Name = "savebutton";
+ this.savebutton.UseStock = true;
+ this.savebutton.UseUnderline = true;
+ this.savebutton.Label = "gtk-save-as";
+ this.outputfilehbox1.Add (this.savebutton);
+ global::Gtk.Box.BoxChild w50 = ((global::Gtk.Box.BoxChild)(this.outputfilehbox1
[this.savebutton]));
+ w50.Position = 1;
+ w50.Expand = false;
+ this.outputfiletable.Add (this.outputfilehbox1);
+ global::Gtk.Table.TableChild w51 =
((global::Gtk.Table.TableChild)(this.outputfiletable [this.outputfilehbox1]));
+ w51.LeftAttach = ((uint)(1));
+ w51.RightAttach = ((uint)(2));
+ w51.YOptions = ((global::Gtk.AttachOptions)(0));
+ // Container child outputfiletable.Gtk.Table+TableChild
+ this.outputfilelabel = new global::Gtk.Label ();
+ this.outputfilelabel.Name = "outputfilelabel";
+ this.outputfilelabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Output file:");
+ this.outputfiletable.Add (this.outputfilelabel);
+ global::Gtk.Table.TableChild w52 =
((global::Gtk.Table.TableChild)(this.outputfiletable [this.outputfilelabel]));
+ w52.XOptions = ((global::Gtk.AttachOptions)(4));
+ w52.YOptions = ((global::Gtk.AttachOptions)(4));
+ this.vbox4.Add (this.outputfiletable);
+ global::Gtk.Box.BoxChild w53 = ((global::Gtk.Box.BoxChild)(this.vbox4
[this.outputfiletable]));
+ w53.Position = 5;
+ w53.Expand = false;
+ w53.Fill = false;
+ // Container child vbox4.Gtk.Box+BoxChild
+ this.capturetable = new global::Gtk.Table (((uint)(2)), ((uint)(4)), true);
+ this.capturetable.Name = "capturetable";
+ this.capturetable.RowSpacing = ((uint)(6));
+ this.capturetable.ColumnSpacing = ((uint)(6));
+ // Container child capturetable.Gtk.Table+TableChild
+ this.encodingcombobox = global::Gtk.ComboBox.NewText ();
+ this.encodingcombobox.Name = "encodingcombobox";
+ this.capturetable.Add (this.encodingcombobox);
+ global::Gtk.Table.TableChild w54 = ((global::Gtk.Table.TableChild)(this.capturetable
[this.encodingcombobox]));
+ w54.LeftAttach = ((uint)(3));
+ w54.RightAttach = ((uint)(4));
+ w54.XOptions = ((global::Gtk.AttachOptions)(4));
+ w54.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child capturetable.Gtk.Table+TableChild
+ this.hbox6 = new global::Gtk.HBox ();
+ this.hbox6.Name = "hbox6";
+ this.hbox6.Spacing = 6;
+ // Container child hbox6.Gtk.Box+BoxChild
+ this.device = new global::Gtk.Label ();
+ this.device.Name = "device";
+ this.device.LabelProp = global::Mono.Unix.Catalog.GetString ("Device:");
+ this.hbox6.Add (this.device);
+ global::Gtk.Box.BoxChild w55 = ((global::Gtk.Box.BoxChild)(this.hbox6 [this.device]));
+ w55.Position = 0;
+ // Container child hbox6.Gtk.Box+BoxChild
+ this.urilabel = new global::Gtk.Label ();
+ this.urilabel.Name = "urilabel";
+ this.urilabel.LabelProp = global::Mono.Unix.Catalog.GetString ("URL:");
+ this.hbox6.Add (this.urilabel);
+ global::Gtk.Box.BoxChild w56 = ((global::Gtk.Box.BoxChild)(this.hbox6
[this.urilabel]));
+ w56.Position = 1;
+ this.capturetable.Add (this.hbox6);
+ global::Gtk.Table.TableChild w57 = ((global::Gtk.Table.TableChild)(this.capturetable
[this.hbox6]));
+ w57.XOptions = ((global::Gtk.AttachOptions)(4));
+ w57.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child capturetable.Gtk.Table+TableChild
+ this.hbox7 = new global::Gtk.HBox ();
+ this.hbox7.Name = "hbox7";
+ this.hbox7.Spacing = 6;
+ // Container child hbox7.Gtk.Box+BoxChild
+ this.devicecombobox = global::Gtk.ComboBox.NewText ();
+ this.devicecombobox.Name = "devicecombobox";
+ this.hbox7.Add (this.devicecombobox);
+ global::Gtk.Box.BoxChild w58 = ((global::Gtk.Box.BoxChild)(this.hbox7
[this.devicecombobox]));
+ w58.Position = 0;
+ // Container child hbox7.Gtk.Box+BoxChild
+ this.urientry = new global::Gtk.Entry ();
+ this.urientry.CanFocus = true;
+ this.urientry.Name = "urientry";
+ this.urientry.IsEditable = true;
+ this.urientry.InvisibleChar = '•';
+ this.hbox7.Add (this.urientry);
+ global::Gtk.Box.BoxChild w59 = ((global::Gtk.Box.BoxChild)(this.hbox7
[this.urientry]));
+ w59.Position = 1;
+ this.capturetable.Add (this.hbox7);
+ global::Gtk.Table.TableChild w60 = ((global::Gtk.Table.TableChild)(this.capturetable
[this.hbox7]));
+ w60.LeftAttach = ((uint)(1));
+ w60.RightAttach = ((uint)(2));
+ w60.XOptions = ((global::Gtk.AttachOptions)(4));
+ w60.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child capturetable.Gtk.Table+TableChild
+ this.imagecombobox = global::Gtk.ComboBox.NewText ();
+ this.imagecombobox.Name = "imagecombobox";
+ this.capturetable.Add (this.imagecombobox);
+ global::Gtk.Table.TableChild w61 = ((global::Gtk.Table.TableChild)(this.capturetable
[this.imagecombobox]));
+ w61.TopAttach = ((uint)(1));
+ w61.BottomAttach = ((uint)(2));
+ w61.LeftAttach = ((uint)(1));
+ w61.RightAttach = ((uint)(2));
+ w61.XOptions = ((global::Gtk.AttachOptions)(4));
+ w61.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child capturetable.Gtk.Table+TableChild
+ this.qualitycombobox = global::Gtk.ComboBox.NewText ();
+ this.qualitycombobox.Name = "qualitycombobox";
+ this.capturetable.Add (this.qualitycombobox);
+ global::Gtk.Table.TableChild w62 = ((global::Gtk.Table.TableChild)(this.capturetable
[this.qualitycombobox]));
+ w62.TopAttach = ((uint)(1));
+ w62.BottomAttach = ((uint)(2));
+ w62.LeftAttach = ((uint)(3));
+ w62.RightAttach = ((uint)(4));
+ w62.XOptions = ((global::Gtk.AttachOptions)(4));
+ w62.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child capturetable.Gtk.Table+TableChild
+ this.qualitylabel = new global::Gtk.Label ();
+ this.qualitylabel.Name = "qualitylabel";
+ this.qualitylabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Quality:");
+ this.capturetable.Add (this.qualitylabel);
+ global::Gtk.Table.TableChild w63 = ((global::Gtk.Table.TableChild)(this.capturetable
[this.qualitylabel]));
+ w63.TopAttach = ((uint)(1));
+ w63.BottomAttach = ((uint)(2));
+ w63.LeftAttach = ((uint)(2));
+ w63.RightAttach = ((uint)(3));
+ w63.XOptions = ((global::Gtk.AttachOptions)(4));
+ w63.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child capturetable.Gtk.Table+TableChild
+ this.sizelabel = new global::Gtk.Label ();
+ this.sizelabel.Name = "sizelabel";
+ this.sizelabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Image format:");
+ this.capturetable.Add (this.sizelabel);
+ global::Gtk.Table.TableChild w64 = ((global::Gtk.Table.TableChild)(this.capturetable
[this.sizelabel]));
+ w64.TopAttach = ((uint)(1));
+ w64.BottomAttach = ((uint)(2));
+ w64.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child capturetable.Gtk.Table+TableChild
+ this.videoformatlabel = new global::Gtk.Label ();
+ this.videoformatlabel.Name = "videoformatlabel";
+ this.videoformatlabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Encoding
format:");
+ this.capturetable.Add (this.videoformatlabel);
+ global::Gtk.Table.TableChild w65 = ((global::Gtk.Table.TableChild)(this.capturetable
[this.videoformatlabel]));
+ w65.LeftAttach = ((uint)(2));
+ w65.RightAttach = ((uint)(3));
+ w65.XOptions = ((global::Gtk.AttachOptions)(4));
+ w65.YOptions = ((global::Gtk.AttachOptions)(4));
+ this.vbox4.Add (this.capturetable);
+ global::Gtk.Box.BoxChild w66 = ((global::Gtk.Box.BoxChild)(this.vbox4
[this.capturetable]));
+ w66.Position = 6;
+ w66.Expand = false;
+ w66.Fill = false;
+ // Container child vbox4.Gtk.Box+BoxChild
+ this.hbox8 = new global::Gtk.HBox ();
+ this.hbox8.Name = "hbox8";
+ this.hbox8.Homogeneous = true;
+ this.hbox8.Spacing = 6;
+ // Container child hbox8.Gtk.Box+BoxChild
+ this.frame1 = new global::Gtk.Frame ();
+ this.frame1.Name = "frame1";
+ this.frame1.ShadowType = ((global::Gtk.ShadowType)(0));
+ // Container child frame1.Gtk.Container+ContainerChild
+ this.GtkAlignment6 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
+ this.GtkAlignment6.Name = "GtkAlignment6";
+ this.GtkAlignment6.LeftPadding = ((uint)(12));
+ // Container child GtkAlignment6.Gtk.Container+ContainerChild
+ this.localteamplayersselection = new
global::LongoMatch.Gui.Component.TeamPlayersSelection ();
+ this.localteamplayersselection.Events = ((global::Gdk.EventMask)(256));
+ this.localteamplayersselection.Name = "localteamplayersselection";
+ this.GtkAlignment6.Add (this.localteamplayersselection);
+ this.frame1.Add (this.GtkAlignment6);
+ this.GtkLabel10 = new global::Gtk.Label ();
+ this.GtkLabel10.Name = "GtkLabel10";
+ this.GtkLabel10.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Home team</b>");
+ this.GtkLabel10.UseMarkup = true;
+ this.frame1.LabelWidget = this.GtkLabel10;
+ this.hbox8.Add (this.frame1);
+ global::Gtk.Box.BoxChild w69 = ((global::Gtk.Box.BoxChild)(this.hbox8 [this.frame1]));
+ w69.Position = 0;
+ // Container child hbox8.Gtk.Box+BoxChild
+ this.frame2 = new global::Gtk.Frame ();
+ this.frame2.Name = "frame2";
+ this.frame2.ShadowType = ((global::Gtk.ShadowType)(0));
+ // Container child frame2.Gtk.Container+ContainerChild
+ this.GtkAlignment7 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
+ this.GtkAlignment7.Name = "GtkAlignment7";
+ this.GtkAlignment7.LeftPadding = ((uint)(12));
+ // Container child GtkAlignment7.Gtk.Container+ContainerChild
+ this.awayteamplayersselection = new
global::LongoMatch.Gui.Component.TeamPlayersSelection ();
+ this.awayteamplayersselection.Events = ((global::Gdk.EventMask)(256));
+ this.awayteamplayersselection.Name = "awayteamplayersselection";
+ this.GtkAlignment7.Add (this.awayteamplayersselection);
+ this.frame2.Add (this.GtkAlignment7);
+ this.GtkLabel11 = new global::Gtk.Label ();
+ this.GtkLabel11.Name = "GtkLabel11";
+ this.GtkLabel11.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Away team</b>");
+ this.GtkLabel11.UseMarkup = true;
+ this.frame2.LabelWidget = this.GtkLabel11;
+ this.hbox8.Add (this.frame2);
+ global::Gtk.Box.BoxChild w72 = ((global::Gtk.Box.BoxChild)(this.hbox8 [this.frame2]));
+ w72.Position = 1;
+ this.vbox4.Add (this.hbox8);
+ global::Gtk.Box.BoxChild w73 = ((global::Gtk.Box.BoxChild)(this.vbox4 [this.hbox8]));
+ w73.Position = 7;
+ this.notebook1.Add (this.vbox4);
+ global::Gtk.Notebook.NotebookChild w74 =
((global::Gtk.Notebook.NotebookChild)(this.notebook1 [this.vbox4]));
+ w74.Position = 1;
+ w74.TabFill = false;
+ w74.MenuLabel = "";
+ // Notebook tab
+ this.label3 = new global::Gtk.Label ();
+ this.label3.Name = "label3";
+ this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("page2");
+ this.notebook1.SetTabLabel (this.vbox4, this.label3);
+ this.label3.ShowAll ();
+ this.hbox3.Add (this.notebook1);
+ global::Gtk.Box.BoxChild w75 = ((global::Gtk.Box.BoxChild)(this.hbox3
[this.notebook1]));
+ w75.Position = 1;
+ this.vbox2.Add (this.hbox3);
+ global::Gtk.Box.BoxChild w76 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox3]));
+ w76.Position = 0;
+ // Container child vbox2.Gtk.Box+BoxChild
+ this.hbuttonbox2 = new global::Gtk.HButtonBox ();
+ this.hbuttonbox2.Name = "hbuttonbox2";
+ this.hbuttonbox2.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(1));
+ // Container child hbuttonbox2.Gtk.ButtonBox+ButtonBoxChild
+ this.backbutton = new global::Gtk.Button ();
+ this.backbutton.CanFocus = true;
+ this.backbutton.Name = "backbutton";
+ this.backbutton.UseUnderline = true;
+ // Container child backbutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w77 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ global::Gtk.HBox w78 = new global::Gtk.HBox ();
+ w78.Spacing = 2;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w79 = new global::Gtk.Image ();
+ w79.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-go-back",
global::Gtk.IconSize.Dialog);
+ w78.Add (w79);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w81 = new global::Gtk.Label ();
+ w81.LabelProp = global::Mono.Unix.Catalog.GetString ("_Back");
+ w81.UseUnderline = true;
+ w78.Add (w81);
+ w77.Add (w78);
+ this.backbutton.Add (w77);
+ this.hbuttonbox2.Add (this.backbutton);
+ global::Gtk.ButtonBox.ButtonBoxChild w85 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox2 [this.backbutton]));
+ w85.Expand = false;
+ w85.Fill = false;
+ // Container child hbuttonbox2.Gtk.ButtonBox+ButtonBoxChild
+ this.nextbutton = new global::Gtk.Button ();
+ this.nextbutton.CanFocus = true;
+ this.nextbutton.Name = "nextbutton";
+ this.nextbutton.UseUnderline = true;
+ // Container child nextbutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w86 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ global::Gtk.HBox w87 = new global::Gtk.HBox ();
+ w87.Spacing = 2;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w88 = new global::Gtk.Image ();
+ w88.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-go-forward",
global::Gtk.IconSize.Dialog);
+ w87.Add (w88);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w90 = new global::Gtk.Label ();
+ w90.LabelProp = global::Mono.Unix.Catalog.GetString ("_Next");
+ w90.UseUnderline = true;
+ w87.Add (w90);
+ w86.Add (w87);
+ this.nextbutton.Add (w86);
+ this.hbuttonbox2.Add (this.nextbutton);
+ global::Gtk.ButtonBox.ButtonBoxChild w94 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox2 [this.nextbutton]));
+ w94.Position = 1;
+ w94.Expand = false;
+ w94.Fill = false;
+ // Container child hbuttonbox2.Gtk.ButtonBox+ButtonBoxChild
+ this.createbutton = new global::Gtk.Button ();
+ this.createbutton.CanFocus = true;
+ this.createbutton.Name = "createbutton";
+ this.createbutton.UseUnderline = true;
+ // Container child createbutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w95 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ global::Gtk.HBox w96 = new global::Gtk.HBox ();
+ w96.Spacing = 2;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w97 = new global::Gtk.Image ();
+ w97.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-new",
global::Gtk.IconSize.Dialog);
+ w96.Add (w97);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w99 = new global::Gtk.Label ();
+ w99.LabelProp = global::Mono.Unix.Catalog.GetString ("Create project");
+ w99.UseUnderline = true;
+ w96.Add (w99);
+ w95.Add (w96);
+ this.createbutton.Add (w95);
+ this.hbuttonbox2.Add (this.createbutton);
+ global::Gtk.ButtonBox.ButtonBoxChild w103 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox2 [this.createbutton]));
+ w103.Position = 2;
+ w103.Expand = false;
+ w103.Fill = false;
+ this.vbox2.Add (this.hbuttonbox2);
+ global::Gtk.Box.BoxChild w104 = ((global::Gtk.Box.BoxChild)(this.vbox2
[this.hbuttonbox2]));
+ w104.Position = 1;
+ w104.Expand = false;
+ this.Add (this.vbox2);
+ if ((this.Child != null)) {
+ this.Child.ShowAll ();
+ }
+ this.filetable.Hide ();
+ this.outputfiletable.Hide ();
+ this.device.Hide ();
+ this.urilabel.Hide ();
+ this.devicecombobox.Hide ();
+ this.urientry.Hide ();
+ this.capturetable.Hide ();
+ this.createbutton.Hide ();
+ this.Hide ();
+ }
+ }
+}
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.OpenProjectPanel.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.OpenProjectPanel.cs
new file mode 100644
index 0000000..0b459df
--- /dev/null
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.OpenProjectPanel.cs
@@ -0,0 +1,70 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+namespace LongoMatch.Gui.Panel
+{
+ public partial class OpenProjectPanel
+ {
+ private global::Gtk.VBox vbox4;
+ private global::LongoMatch.Gui.Component.ProjectListWidget projectlistwidget;
+ private global::Gtk.HButtonBox hbuttonbox;
+ private global::Gtk.Button backbutton;
+
+ protected virtual void Build ()
+ {
+ global::Stetic.Gui.Initialize (this);
+ // Widget LongoMatch.Gui.Panel.OpenProjectPanel
+ global::Stetic.BinContainer.Attach (this);
+ this.Name = "LongoMatch.Gui.Panel.OpenProjectPanel";
+ // Container child LongoMatch.Gui.Panel.OpenProjectPanel.Gtk.Container+ContainerChild
+ this.vbox4 = new global::Gtk.VBox ();
+ this.vbox4.Name = "vbox4";
+ this.vbox4.Spacing = 6;
+ // Container child vbox4.Gtk.Box+BoxChild
+ this.projectlistwidget = new global::LongoMatch.Gui.Component.ProjectListWidget ();
+ this.projectlistwidget.Events = ((global::Gdk.EventMask)(256));
+ this.projectlistwidget.Name = "projectlistwidget";
+ this.vbox4.Add (this.projectlistwidget);
+ global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox4
[this.projectlistwidget]));
+ w1.Position = 0;
+ // Container child vbox4.Gtk.Box+BoxChild
+ this.hbuttonbox = new global::Gtk.HButtonBox ();
+ this.hbuttonbox.Name = "hbuttonbox";
+ this.hbuttonbox.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(3));
+ // Container child hbuttonbox.Gtk.ButtonBox+ButtonBoxChild
+ this.backbutton = new global::Gtk.Button ();
+ this.backbutton.CanFocus = true;
+ this.backbutton.Name = "backbutton";
+ this.backbutton.UseUnderline = true;
+ // Container child backbutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w2 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ global::Gtk.HBox w3 = new global::Gtk.HBox ();
+ w3.Spacing = 2;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w4 = new global::Gtk.Image ();
+ w4.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-go-back",
global::Gtk.IconSize.Dialog);
+ w3.Add (w4);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w6 = new global::Gtk.Label ();
+ w6.LabelProp = global::Mono.Unix.Catalog.GetString ("Back");
+ w6.UseUnderline = true;
+ w3.Add (w6);
+ w2.Add (w3);
+ this.backbutton.Add (w2);
+ this.hbuttonbox.Add (this.backbutton);
+ global::Gtk.ButtonBox.ButtonBoxChild w10 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox [this.backbutton]));
+ w10.Expand = false;
+ w10.Fill = false;
+ this.vbox4.Add (this.hbuttonbox);
+ global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.vbox4
[this.hbuttonbox]));
+ w11.Position = 1;
+ w11.Expand = false;
+ w11.Fill = false;
+ this.Add (this.vbox4);
+ if ((this.Child != null)) {
+ this.Child.ShowAll ();
+ }
+ this.Hide ();
+ }
+ }
+}
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.WelcomePanel.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.WelcomePanel.cs
new file mode 100644
index 0000000..4419a43
--- /dev/null
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.WelcomePanel.cs
@@ -0,0 +1,264 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+namespace LongoMatch.Gui.Panel
+{
+ public partial class WelcomePanel
+ {
+ private global::Gtk.VBox vbox1;
+ private global::LongoMatch.Gui.Component.BackgroundWidget backgroundwidget;
+ private global::Gtk.Label label1;
+ private global::Gtk.HButtonBox hbuttonbox1;
+ private global::Gtk.Button newbutton;
+ private global::Gtk.Button openbutton;
+ private global::Gtk.Button importbutton;
+ private global::Gtk.Label label2;
+ private global::Gtk.HButtonBox hbuttonbox2;
+ private global::Gtk.Button preferencesbutton;
+ private global::Gtk.Button projectsbutton;
+ private global::Gtk.Button sportsbutton;
+ private global::Gtk.Button teamsbutton;
+
+ protected virtual void Build ()
+ {
+ global::Stetic.Gui.Initialize (this);
+ // Widget LongoMatch.Gui.Panel.WelcomePanel
+ global::Stetic.BinContainer.Attach (this);
+ this.Name = "LongoMatch.Gui.Panel.WelcomePanel";
+ // Container child LongoMatch.Gui.Panel.WelcomePanel.Gtk.Container+ContainerChild
+ this.vbox1 = new global::Gtk.VBox ();
+ this.vbox1.Name = "vbox1";
+ this.vbox1.Spacing = 6;
+ // Container child vbox1.Gtk.Box+BoxChild
+ this.backgroundwidget = new global::LongoMatch.Gui.Component.BackgroundWidget ();
+ this.backgroundwidget.Events = ((global::Gdk.EventMask)(256));
+ this.backgroundwidget.Name = "backgroundwidget";
+ this.vbox1.Add (this.backgroundwidget);
+ global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox1
[this.backgroundwidget]));
+ w1.Position = 0;
+ // Container child vbox1.Gtk.Box+BoxChild
+ this.label1 = new global::Gtk.Label ();
+ this.label1.Name = "label1";
+ this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Projects</b>");
+ this.label1.UseMarkup = true;
+ this.label1.Justify = ((global::Gtk.Justification)(2));
+ this.vbox1.Add (this.label1);
+ global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.label1]));
+ w2.Position = 1;
+ w2.Expand = false;
+ w2.Fill = false;
+ // Container child vbox1.Gtk.Box+BoxChild
+ this.hbuttonbox1 = new global::Gtk.HButtonBox ();
+ this.hbuttonbox1.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(1));
+ // Container child hbuttonbox1.Gtk.ButtonBox+ButtonBoxChild
+ this.newbutton = new global::Gtk.Button ();
+ this.newbutton.CanFocus = true;
+ this.newbutton.Name = "newbutton";
+ this.newbutton.UseUnderline = true;
+ // Container child newbutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w3 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ global::Gtk.HBox w4 = new global::Gtk.HBox ();
+ w4.Spacing = 2;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w5 = new global::Gtk.Image ();
+ w5.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-new",
global::Gtk.IconSize.Dialog);
+ w4.Add (w5);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w7 = new global::Gtk.Label ();
+ w7.LabelProp = global::Mono.Unix.Catalog.GetString ("New Project");
+ w7.UseUnderline = true;
+ w4.Add (w7);
+ w3.Add (w4);
+ this.newbutton.Add (w3);
+ this.hbuttonbox1.Add (this.newbutton);
+ global::Gtk.ButtonBox.ButtonBoxChild w11 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox1 [this.newbutton]));
+ w11.Expand = false;
+ w11.Fill = false;
+ // Container child hbuttonbox1.Gtk.ButtonBox+ButtonBoxChild
+ this.openbutton = new global::Gtk.Button ();
+ this.openbutton.CanFocus = true;
+ this.openbutton.Name = "openbutton";
+ this.openbutton.UseUnderline = true;
+ // Container child openbutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w12 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ global::Gtk.HBox w13 = new global::Gtk.HBox ();
+ w13.Spacing = 2;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w14 = new global::Gtk.Image ();
+ w14.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-open",
global::Gtk.IconSize.Dialog);
+ w13.Add (w14);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w16 = new global::Gtk.Label ();
+ w16.LabelProp = global::Mono.Unix.Catalog.GetString ("Open Project");
+ w16.UseUnderline = true;
+ w13.Add (w16);
+ w12.Add (w13);
+ this.openbutton.Add (w12);
+ this.hbuttonbox1.Add (this.openbutton);
+ global::Gtk.ButtonBox.ButtonBoxChild w20 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox1 [this.openbutton]));
+ w20.Position = 1;
+ w20.Expand = false;
+ w20.Fill = false;
+ // Container child hbuttonbox1.Gtk.ButtonBox+ButtonBoxChild
+ this.importbutton = new global::Gtk.Button ();
+ this.importbutton.CanFocus = true;
+ this.importbutton.Name = "importbutton";
+ this.importbutton.UseUnderline = true;
+ // Container child importbutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w21 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ global::Gtk.HBox w22 = new global::Gtk.HBox ();
+ w22.Spacing = 2;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w23 = new global::Gtk.Image ();
+ w23.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-jump-to",
global::Gtk.IconSize.Dialog);
+ w22.Add (w23);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w25 = new global::Gtk.Label ();
+ w25.LabelProp = global::Mono.Unix.Catalog.GetString ("Import Project");
+ w25.UseUnderline = true;
+ w22.Add (w25);
+ w21.Add (w22);
+ this.importbutton.Add (w21);
+ this.hbuttonbox1.Add (this.importbutton);
+ global::Gtk.ButtonBox.ButtonBoxChild w29 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox1 [this.importbutton]));
+ w29.Position = 2;
+ w29.Expand = false;
+ w29.Fill = false;
+ this.vbox1.Add (this.hbuttonbox1);
+ global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.vbox1
[this.hbuttonbox1]));
+ w30.Position = 2;
+ w30.Expand = false;
+ w30.Fill = false;
+ // Container child vbox1.Gtk.Box+BoxChild
+ this.label2 = new global::Gtk.Label ();
+ this.label2.Name = "label2";
+ this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Tools</b>");
+ this.label2.UseMarkup = true;
+ this.label2.Justify = ((global::Gtk.Justification)(2));
+ this.vbox1.Add (this.label2);
+ global::Gtk.Box.BoxChild w31 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.label2]));
+ w31.Position = 3;
+ w31.Expand = false;
+ w31.Fill = false;
+ // Container child vbox1.Gtk.Box+BoxChild
+ this.hbuttonbox2 = new global::Gtk.HButtonBox ();
+ this.hbuttonbox2.Name = "hbuttonbox2";
+ this.hbuttonbox2.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(1));
+ // Container child hbuttonbox2.Gtk.ButtonBox+ButtonBoxChild
+ this.preferencesbutton = new global::Gtk.Button ();
+ this.preferencesbutton.CanFocus = true;
+ this.preferencesbutton.Name = "preferencesbutton";
+ this.preferencesbutton.UseUnderline = true;
+ // Container child preferencesbutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w32 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ global::Gtk.HBox w33 = new global::Gtk.HBox ();
+ w33.Spacing = 2;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w34 = new global::Gtk.Image ();
+ w34.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-preferences",
global::Gtk.IconSize.Dialog);
+ w33.Add (w34);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w36 = new global::Gtk.Label ();
+ w36.LabelProp = global::Mono.Unix.Catalog.GetString ("Preferences");
+ w36.UseUnderline = true;
+ w33.Add (w36);
+ w32.Add (w33);
+ this.preferencesbutton.Add (w32);
+ this.hbuttonbox2.Add (this.preferencesbutton);
+ global::Gtk.ButtonBox.ButtonBoxChild w40 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox2 [this.preferencesbutton]));
+ w40.Expand = false;
+ w40.Fill = false;
+ // Container child hbuttonbox2.Gtk.ButtonBox+ButtonBoxChild
+ this.projectsbutton = new global::Gtk.Button ();
+ this.projectsbutton.CanFocus = true;
+ this.projectsbutton.Name = "projectsbutton";
+ this.projectsbutton.UseUnderline = true;
+ // Container child projectsbutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w41 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ global::Gtk.HBox w42 = new global::Gtk.HBox ();
+ w42.Spacing = 2;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w43 = new global::Gtk.Image ();
+ w43.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-properties",
global::Gtk.IconSize.Dialog);
+ w42.Add (w43);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w45 = new global::Gtk.Label ();
+ w45.LabelProp = global::Mono.Unix.Catalog.GetString ("Projects Manager");
+ w45.UseUnderline = true;
+ w42.Add (w45);
+ w41.Add (w42);
+ this.projectsbutton.Add (w41);
+ this.hbuttonbox2.Add (this.projectsbutton);
+ global::Gtk.ButtonBox.ButtonBoxChild w49 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox2 [this.projectsbutton]));
+ w49.Position = 1;
+ w49.Expand = false;
+ w49.Fill = false;
+ // Container child hbuttonbox2.Gtk.ButtonBox+ButtonBoxChild
+ this.sportsbutton = new global::Gtk.Button ();
+ this.sportsbutton.CanFocus = true;
+ this.sportsbutton.Name = "sportsbutton";
+ this.sportsbutton.UseUnderline = true;
+ // Container child sportsbutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w50 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ global::Gtk.HBox w51 = new global::Gtk.HBox ();
+ w51.Spacing = 2;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w52 = new global::Gtk.Image ();
+ w52.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-edit",
global::Gtk.IconSize.Dialog);
+ w51.Add (w52);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w54 = new global::Gtk.Label ();
+ w54.LabelProp = global::Mono.Unix.Catalog.GetString ("Sports templates");
+ w54.UseUnderline = true;
+ w51.Add (w54);
+ w50.Add (w51);
+ this.sportsbutton.Add (w50);
+ this.hbuttonbox2.Add (this.sportsbutton);
+ global::Gtk.ButtonBox.ButtonBoxChild w58 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox2 [this.sportsbutton]));
+ w58.Position = 2;
+ w58.Expand = false;
+ w58.Fill = false;
+ // Container child hbuttonbox2.Gtk.ButtonBox+ButtonBoxChild
+ this.teamsbutton = new global::Gtk.Button ();
+ this.teamsbutton.CanFocus = true;
+ this.teamsbutton.Name = "teamsbutton";
+ this.teamsbutton.UseUnderline = true;
+ // Container child teamsbutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w59 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ global::Gtk.HBox w60 = new global::Gtk.HBox ();
+ w60.Spacing = 2;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w61 = new global::Gtk.Image ();
+ w61.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-edit",
global::Gtk.IconSize.Dialog);
+ w60.Add (w61);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w63 = new global::Gtk.Label ();
+ w63.LabelProp = global::Mono.Unix.Catalog.GetString ("Teams templates");
+ w63.UseUnderline = true;
+ w60.Add (w63);
+ w59.Add (w60);
+ this.teamsbutton.Add (w59);
+ this.hbuttonbox2.Add (this.teamsbutton);
+ global::Gtk.ButtonBox.ButtonBoxChild w67 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox2 [this.teamsbutton]));
+ w67.Position = 3;
+ w67.Expand = false;
+ w67.Fill = false;
+ this.vbox1.Add (this.hbuttonbox2);
+ global::Gtk.Box.BoxChild w68 = ((global::Gtk.Box.BoxChild)(this.vbox1
[this.hbuttonbox2]));
+ w68.Position = 4;
+ w68.Expand = false;
+ w68.Fill = false;
+ this.Add (this.vbox1);
+ if ((this.Child != null)) {
+ this.Child.ShowAll ();
+ }
+ this.Hide ();
+ }
+ }
+}
diff --git a/LongoMatch.GUI/gtk-gui/generated.cs b/LongoMatch.GUI/gtk-gui/generated.cs
index 2f73e58..d23ef38 100644
--- a/LongoMatch.GUI/gtk-gui/generated.cs
+++ b/LongoMatch.GUI/gtk-gui/generated.cs
@@ -10,10 +10,6 @@ namespace Stetic
{
if ((Stetic.Gui.initialized == false)) {
Stetic.Gui.initialized = true;
- global::Gtk.IconFactory w1 = new global::Gtk.IconFactory ();
- global::Gtk.IconSet w2 = new global::Gtk.IconSet
(global::Gdk.Pixbuf.LoadFromResource ("logo.svg"));
- w1.Add ("longomatch", w2);
- w1.AddDefault ();
}
}
}
diff --git a/LongoMatch.GUI/gtk-gui/gui.stetic b/LongoMatch.GUI/gtk-gui/gui.stetic
index e4c35fd..2e1b799 100644
--- a/LongoMatch.GUI/gtk-gui/gui.stetic
+++ b/LongoMatch.GUI/gtk-gui/gui.stetic
@@ -10,14 +10,7 @@
<widget-library name="../../bin/LongoMatch.dll" />
<widget-library name="../../bin/LongoMatch.Gui.dll" internal="true" />
</import>
- <icon-factory>
- <icon-set id="longomatch">
- <source>
- <property name="Image">resource:logo.svg</property>
- </source>
- </icon-set>
- </icon-factory>
- <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.ProjectDetailsWidget" design-size="402 334">
+ <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.ProjectDetailsWidget" design-size="402 476">
<property name="MemberName" />
<child>
<widget class="Gtk.VBox" id="vbox2">
@@ -621,6 +614,7 @@
<widget class="Gtk.Expander" id="expander1">
<property name="MemberName" />
<property name="CanFocus">True</property>
+ <property name="Expanded">True</property>
<child>
<widget class="Gtk.Table" id="table2">
<property name="MemberName" />
@@ -854,8 +848,8 @@
<property name="MemberName" />
<property name="CanFocus">True</property>
<child>
- <widget class="Gtk.TreeView" id="treeview">
- <property name="MemberName">treeview</property>
+ <widget class="Gtk.IconView" id="iconview">
+ <property name="MemberName" />
<property name="CanFocus">True</property>
</widget>
</child>
@@ -1559,7 +1553,7 @@
</widget>
</child>
</widget>
- <widget class="Gtk.Window" id="LongoMatch.Gui.MainWindow" design-size="1503 686">
+ <widget class="Gtk.Window" id="LongoMatch.Gui.MainWindow" design-size="938 604">
<action-group name="Default">
<action id="FileAction">
<property name="Type">Action</property>
@@ -1878,12 +1872,19 @@
<property name="MemberName" />
<property name="Spacing">6</property>
<child>
- <placeholder />
+ <widget class="LongoMatch.Gui.Panel.WelcomePanel" id="welcomepanel1">
+ <property name="MemberName" />
+ <property name="Events">ButtonPressMask</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">False</property>
+ </packing>
</child>
</widget>
<packing>
<property name="Position">1</property>
- <property name="AutoSize">True</property>
+ <property name="AutoSize">False</property>
</packing>
</child>
<child>
@@ -4680,6 +4681,7 @@ No</property>
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="Label" translatable="yes" />
+ <property name="Active">True</property>
<property name="DrawIndicator">False</property>
<property name="HasLabel">False</property>
<property name="UseUnderline">True</property>
@@ -5600,7 +5602,6 @@ Show-><b> S</b>
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="Label" translatable="yes">New project using a video file</property>
- <property name="Active">True</property>
<property name="DrawIndicator">True</property>
<property name="HasLabel">True</property>
<property name="UseUnderline">True</property>
@@ -5955,7 +5956,8 @@ You can continue with the current capture, cancel it or save your project.
<property name="MemberName" />
<property name="Title" translatable="yes" />
<property name="Icon">stock:longomatch Menu</property>
- <property name="WindowPosition">CenterOnParent</property>
+ <property name="TypeHint">Dialog</property>
+ <property name="WindowPosition">Center</property>
<property name="Modal">True</property>
<property name="Resizable">False</property>
<property name="AllowGrow">False</property>
@@ -8658,6 +8660,7 @@ Defining <b> Game Units </b> will help you during the analysis to in
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="Label" translatable="yes">Histogram</property>
+ <property name="Active">True</property>
<property name="DrawIndicator">True</property>
<property name="HasLabel">True</property>
<property name="UseUnderline">True</property>
@@ -9442,4 +9445,1412 @@ Defining <b> Game Units </b> will help you during the analysis to in
</widget>
</child>
</widget>
+ <widget class="Gtk.Bin" id="LongoMatch.Gui.Panel.WelcomePanel" design-size="861 345">
+ <property name="MemberName" />
+ <property name="Visible">False</property>
+ <child>
+ <widget class="Gtk.VBox" id="vbox1">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="LongoMatch.Gui.Component.BackgroundWidget" id="backgroundwidget">
+ <property name="MemberName" />
+ <property name="Events">ButtonPressMask</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label1">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes"><b>Projects</b></property>
+ <property name="UseMarkup">True</property>
+ <property name="Justify">Center</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.HButtonBox" id="hbuttonbox1">
+ <property name="MemberName" />
+ <property name="Size">3</property>
+ <property name="LayoutStyle">Spread</property>
+ <child>
+ <widget class="Gtk.Button" id="newbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:gtk-new Dialog</property>
+ <property name="Label" translatable="yes">New Project</property>
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="openbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:gtk-open Dialog</property>
+ <property name="Label" translatable="yes">Open Project</property>
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="importbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:gtk-jump-to Dialog</property>
+ <property name="Label" translatable="yes">Import Project</property>
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Position">2</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">2</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label2">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes"><b>Tools</b></property>
+ <property name="UseMarkup">True</property>
+ <property name="Justify">Center</property>
+ </widget>
+ <packing>
+ <property name="Position">3</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.HButtonBox" id="hbuttonbox2">
+ <property name="MemberName" />
+ <property name="Size">4</property>
+ <property name="LayoutStyle">Spread</property>
+ <child>
+ <widget class="Gtk.Button" id="preferencesbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:gtk-preferences Dialog</property>
+ <property name="Label" translatable="yes">Preferences</property>
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="projectsbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:gtk-properties Dialog</property>
+ <property name="Label" translatable="yes">Projects Manager</property>
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="sportsbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:gtk-edit Dialog</property>
+ <property name="Label" translatable="yes">Sports templates</property>
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Position">2</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="teamsbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:gtk-edit Dialog</property>
+ <property name="Label" translatable="yes">Teams templates</property>
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Position">3</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">4</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.BackgroundWidget" design-size="300 300">
+ <property name="MemberName" />
+ <property name="Visible">False</property>
+ <child>
+ <widget class="Gtk.DrawingArea" id="drawingarea">
+ <property name="MemberName" />
+ </widget>
+ </child>
+ </widget>
+ <widget class="Gtk.Bin" id="LongoMatch.Gui.Panel.OpenProjectPanel" design-size="514 324">
+ <property name="MemberName" />
+ <property name="Visible">False</property>
+ <child>
+ <widget class="Gtk.VBox" id="vbox4">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="LongoMatch.Gui.Component.ProjectListWidget" id="projectlistwidget">
+ <property name="MemberName" />
+ <property name="Events">ButtonPressMask</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.HButtonBox" id="hbuttonbox">
+ <property name="MemberName" />
+ <property name="Size">1</property>
+ <property name="LayoutStyle">Start</property>
+ <child>
+ <widget class="Gtk.Button" id="backbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:gtk-go-back Dialog</property>
+ <property name="Label" translatable="yes">Back</property>
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">False</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <widget class="Gtk.Bin" id="LongoMatch.Gui.Panel.NewProjectPanel" design-size="1336 647">
+ <property name="MemberName" />
+ <property name="Visible">False</property>
+ <child>
+ <widget class="Gtk.VBox" id="vbox2">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.HBox" id="hbox3">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="LongoMatch.Gui.Component.BackgroundWidget" id="backgroundwidget">
+ <property name="MemberName" />
+ <property name="Events">ButtonPressMask</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">False</property>
+ <property name="Expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Notebook" id="notebook1">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="CurrentPage">1</property>
+ <property name="ShowBorder">False</property>
+ <property name="Scrollable">True</property>
+ <child>
+ <widget class="Gtk.VBox" id="vbox3">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.Label" id="label6">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes"><b>Select new project
type</b></property>
+ <property name="UseMarkup">True</property>
+ <property name="Justify">Center</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">False</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ <property name="Padding">30</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.HSeparator" id="hseparator1">
+ <property name="MemberName" />
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.HBox" id="hbox1">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.RadioButton" id="fromfileradiobutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Label" translatable="yes">New project using a video
file</property>
+ <property name="DrawIndicator">True</property>
+ <property name="HasLabel">True</property>
+ <property name="UseUnderline">True</property>
+ <property name="FocusOnClick">False</property>
+ <property name="Group">project</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Image" id="image61">
+ <property name="MemberName" />
+ <property name="Pixbuf">resource:video.png</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">2</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.HBox" id="hbox2">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.RadioButton" id="liveradiobutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Label" translatable="yes">Live project using a capture
device</property>
+ <property name="DrawIndicator">True</property>
+ <property name="HasLabel">True</property>
+ <property name="UseUnderline">True</property>
+ <property name="Group">project</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Image" id="image63">
+ <property name="MemberName" />
+ <property name="Pixbuf">resource:camera-video.png</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">3</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.HBox" id="hbox4">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.RadioButton" id="fakeliveradiobutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Label" translatable="yes">Live project using a fake capture
device</property>
+ <property name="DrawIndicator">True</property>
+ <property name="HasLabel">True</property>
+ <property name="UseUnderline">True</property>
+ <property name="Group">project</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Image" id="image62">
+ <property name="MemberName" />
+ <property name="Pixbuf">resource:camera-video.png</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">4</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.HBox" id="ipcamerabox">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.RadioButton" id="uriliveradiobutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Label" translatable="yes">Live project using an IP
camera</property>
+ <property name="DrawIndicator">True</property>
+ <property name="HasLabel">True</property>
+ <property name="UseUnderline">True</property>
+ <property name="Group">project</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Image" id="image64">
+ <property name="MemberName" />
+ <property name="Pixbuf">resource:camera-video.png</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">5</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label1">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">page1</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.VBox" id="vbox4">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.Label" id="label4">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes"><b>Project
properties</b></property>
+ <property name="UseMarkup">True</property>
+ <property name="Justify">Center</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">False</property>
+ <property name="Expand">False</property>
+ <property name="Padding">20</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.HSeparator" id="hseparator2">
+ <property name="MemberName" />
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Table" id="table1">
+ <property name="MemberName" />
+ <property name="NRows">3</property>
+ <property name="NColumns">4</property>
+ <property name="Homogeneous">True</property>
+ <property name="RowSpacing">6</property>
+ <property name="ColumnSpacing">6</property>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <widget class="Gtk.Entry" id="competitionentry">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="IsEditable">True</property>
+ <property name="InvisibleChar">●</property>
+ </widget>
+ <packing>
+ <property name="LeftAttach">3</property>
+ <property name="RightAttach">4</property>
+ <property name="AutoSize">True</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="Competitionlabel">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">Competition:</property>
+ </widget>
+ <packing>
+ <property name="LeftAttach">2</property>
+ <property name="RightAttach">3</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.HBox" id="hbox5">
+ <property name="MemberName" />
+ <child>
+ <widget class="Gtk.Entry" id="dateEntry">
+ <property name="MemberName">dateEntry</property>
+ <property name="CanFocus">True</property>
+ <property name="IsEditable">False</property>
+ <property name="InvisibleChar">●</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="calendarbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:stock_calendar Button</property>
+ <property name="Label" translatable="yes">_Calendar</property>
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="LeftAttach">3</property>
+ <property name="RightAttach">4</property>
+ <property name="AutoSize">True</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.HBox" id="hbox9">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.SpinButton" id="localSpinButton">
+ <property name="MemberName">localSpinButton</property>
+ <property name="CanFocus">True</property>
+ <property name="Upper">1000</property>
+ <property name="PageIncrement">10</property>
+ <property name="StepIncrement">1</property>
+ <property name="ClimbRate">1</property>
+ <property name="Numeric">True</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label2">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">-</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.SpinButton" id="visitorSpinButton">
+ <property name="MemberName">visitorSpinButton</property>
+ <property name="CanFocus">True</property>
+ <property name="Upper">1000</property>
+ <property name="PageIncrement">10</property>
+ <property name="StepIncrement">1</property>
+ <property name="ClimbRate">1</property>
+ <property name="Numeric">True</property>
+ </widget>
+ <packing>
+ <property name="Position">2</property>
+ <property name="AutoSize">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label11">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">Score:</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label5">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">Date:</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="LeftAttach">2</property>
+ <property name="RightAttach">3</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label9">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">Analisys Template:</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">2</property>
+ <property name="BottomAttach">3</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Entry" id="seasonentry">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="IsEditable">True</property>
+ <property name="InvisibleChar">●</property>
+ </widget>
+ <packing>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="seasonlabel">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">Season:</property>
+ </widget>
+ <packing>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.ComboBox" id="tagscombobox">
+ <property name="MemberName" />
+ <property name="IsTextCombo">True</property>
+ <property name="Items" translatable="yes" />
+ </widget>
+ <packing>
+ <property name="TopAttach">2</property>
+ <property name="BottomAttach">3</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">2</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.HSeparator" id="hseparator3">
+ <property name="MemberName" />
+ </widget>
+ <packing>
+ <property name="Position">3</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Table" id="filetable">
+ <property name="MemberName" />
+ <property name="Visible">False</property>
+ <property name="NColumns">4</property>
+ <property name="Homogeneous">True</property>
+ <property name="RowSpacing">6</property>
+ <property name="ColumnSpacing">6</property>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <widget class="Gtk.HBox" id="filehbox">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.Entry" id="fileEntry">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="IsEditable">False</property>
+ <property name="HasFrame">False</property>
+ <property name="InvisibleChar">●</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="openbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="UseStock">True</property>
+ <property name="Type">StockItem</property>
+ <property name="StockId">gtk-open</property>
+ <property name="label">gtk-open</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">False</property>
+ <property name="Expand">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="filelabel">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">File:</property>
+ </widget>
+ <packing>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">4</property>
+ <property name="AutoSize">False</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Table" id="outputfiletable">
+ <property name="MemberName" />
+ <property name="Visible">False</property>
+ <property name="NColumns">4</property>
+ <property name="Homogeneous">True</property>
+ <property name="RowSpacing">6</property>
+ <property name="ColumnSpacing">6</property>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <widget class="Gtk.HBox" id="outputfilehbox1">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.Entry" id="outfileEntry">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="IsEditable">False</property>
+ <property name="HasFrame">False</property>
+ <property name="InvisibleChar">●</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="savebutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="UseStock">True</property>
+ <property name="Type">StockItem</property>
+ <property name="StockId">gtk-save-as</property>
+ <property name="label">gtk-save-as</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">False</property>
+ <property name="Expand">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">False</property>
+ <property name="YOptions">0</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">False</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="outputfilelabel">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">Output file:</property>
+ </widget>
+ <packing>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">5</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Table" id="capturetable">
+ <property name="MemberName" />
+ <property name="Visible">False</property>
+ <property name="NRows">2</property>
+ <property name="NColumns">4</property>
+ <property name="Homogeneous">True</property>
+ <property name="RowSpacing">6</property>
+ <property name="ColumnSpacing">6</property>
+ <child>
+ <widget class="Gtk.ComboBox" id="encodingcombobox">
+ <property name="MemberName" />
+ <property name="IsTextCombo">True</property>
+ <property name="Items" translatable="yes" />
+ </widget>
+ <packing>
+ <property name="LeftAttach">3</property>
+ <property name="RightAttach">4</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.HBox" id="hbox6">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.Label" id="device">
+ <property name="MemberName" />
+ <property name="Visible">False</property>
+ <property name="LabelProp" translatable="yes">Device:</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="urilabel">
+ <property name="MemberName" />
+ <property name="Visible">False</property>
+ <property name="LabelProp" translatable="yes">URL:</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="AutoSize">False</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.HBox" id="hbox7">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.ComboBox" id="devicecombobox">
+ <property name="MemberName" />
+ <property name="Visible">False</property>
+ <property name="IsTextCombo">True</property>
+ <property name="Items" translatable="yes" />
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Entry" id="urientry">
+ <property name="MemberName" />
+ <property name="Visible">False</property>
+ <property name="CanFocus">True</property>
+ <property name="IsEditable">True</property>
+ <property name="InvisibleChar">•</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.ComboBox" id="imagecombobox">
+ <property name="MemberName" />
+ <property name="IsTextCombo">True</property>
+ <property name="Items" translatable="yes" />
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.ComboBox" id="qualitycombobox">
+ <property name="MemberName" />
+ <property name="IsTextCombo">True</property>
+ <property name="Items" translatable="yes" />
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="LeftAttach">3</property>
+ <property name="RightAttach">4</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="qualitylabel">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">Quality:</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="LeftAttach">2</property>
+ <property name="RightAttach">3</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="sizelabel">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">Image format:</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="AutoSize">False</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="videoformatlabel">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">Encoding format:</property>
+ </widget>
+ <packing>
+ <property name="LeftAttach">2</property>
+ <property name="RightAttach">3</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">6</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.HBox" id="hbox8">
+ <property name="MemberName" />
+ <property name="Homogeneous">True</property>
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.Frame" id="frame1">
+ <property name="MemberName" />
+ <property name="ShadowType">None</property>
+ <child>
+ <widget class="Gtk.Alignment" id="GtkAlignment6">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="Yalign">0</property>
+ <property name="LeftPadding">12</property>
+ <child>
+ <widget class="LongoMatch.Gui.Component.TeamPlayersSelection"
id="localteamplayersselection">
+ <property name="MemberName" />
+ <property name="Events">ButtonPressMask</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="GtkLabel10">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes"><b>Home
team</b></property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Frame" id="frame2">
+ <property name="MemberName" />
+ <property name="ShadowType">None</property>
+ <child>
+ <widget class="Gtk.Alignment" id="GtkAlignment7">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="Yalign">0</property>
+ <property name="LeftPadding">12</property>
+ <child>
+ <widget class="LongoMatch.Gui.Component.TeamPlayersSelection"
id="awayteamplayersselection">
+ <property name="MemberName" />
+ <property name="Events">ButtonPressMask</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="GtkLabel11">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes"><b>Away
team</b></property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">7</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="TabFill">False</property>
+ <property name="MenuLabel" translatable="yes" />
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label3">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">page2</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.HButtonBox" id="hbuttonbox2">
+ <property name="MemberName" />
+ <property name="Size">3</property>
+ <property name="LayoutStyle">Spread</property>
+ <child>
+ <widget class="Gtk.Button" id="backbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:gtk-go-back Dialog</property>
+ <property name="Label" translatable="yes">_Back</property>
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="nextbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:gtk-go-forward Dialog</property>
+ <property name="Label" translatable="yes">_Next</property>
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="createbutton">
+ <property name="MemberName" />
+ <property name="Visible">False</property>
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:gtk-new Dialog</property>
+ <property name="Label" translatable="yes">Create project</property>
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Position">2</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">False</property>
+ <property name="Expand">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.TeamPlayersSelection" design-size="300 300">
+ <property name="MemberName" />
+ <property name="Visible">False</property>
+ <child>
+ <widget class="Gtk.VBox" id="vbox4">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.HBox" id="hbox4">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.Image" id="shieldimage">
+ <property name="MemberName" />
+ <property name="Pixbuf">resource:logo.svg</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="namelabel">
+ <property name="MemberName" />
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.ComboBox" id="teamscombobox">
+ <property name="MemberName" />
+ <property name="IsTextCombo">True</property>
+ <property name="Items" translatable="yes" />
+ </widget>
+ <packing>
+ <property name="Position">2</property>
+ <property name="AutoSize">False</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.ScrolledWindow" id="GtkScrolledWindow">
+ <property name="MemberName" />
+ <property name="ShadowType">In</property>
+ <child>
+ <widget class="Gtk.IconView" id="playersiconview">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="ShowScrollbars">True</property>
+ <property name="SelectionMode">None</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
</stetic-interface>
\ No newline at end of file
diff --git a/LongoMatch.GUI/gtk-gui/objects.xml b/LongoMatch.GUI/gtk-gui/objects.xml
index f76d513..c71d4b5 100644
--- a/LongoMatch.GUI/gtk-gui/objects.xml
+++ b/LongoMatch.GUI/gtk-gui/objects.xml
@@ -115,6 +115,7 @@
<signals>
<itemgroup label="ProjectListWidget Signals">
<signal name="ProjectsSelected" />
+ <signal name="ProjectSelected" />
</itemgroup>
</signals>
</object>
@@ -484,4 +485,34 @@
</itemgroup>
</signals>
</object>
+ <object type="LongoMatch.Gui.Panel.WelcomePanel" palette-category="General" allow-children="false"
base-type="Gtk.Bin">
+ <itemgroups />
+ <signals />
+ </object>
+ <object type="LongoMatch.Gui.Component.BackgroundWidget" palette-category="General" allow-children="false"
base-type="Gtk.Bin">
+ <itemgroups />
+ <signals />
+ </object>
+ <object type="LongoMatch.Gui.Panel.OpenProjectPanel" palette-category="General" allow-children="false"
base-type="Gtk.Bin">
+ <itemgroups />
+ <signals>
+ <itemgroup label="OpenProjectPanel Signals">
+ <signal name="OpenProjectEvent" />
+ <signal name="BackEvent" />
+ </itemgroup>
+ </signals>
+ </object>
+ <object type="LongoMatch.Gui.Panel.NewProjectPanel" palette-category="General" allow-children="false"
base-type="Gtk.Bin">
+ <itemgroups />
+ <signals>
+ <itemgroup label="NewProjectPanel Signals">
+ <signal name="CancelEvent" />
+ <signal name="OpenNewProjectEvent" />
+ </itemgroup>
+ </signals>
+ </object>
+ <object type="LongoMatch.Gui.Component.TeamPlayersSelection" palette-category="General"
allow-children="false" base-type="Gtk.Bin">
+ <itemgroups />
+ <signals />
+ </object>
</objects>
\ No newline at end of file
diff --git a/LongoMatch.Multimedia/LongoMatch.Multimedia.mdp b/LongoMatch.Multimedia/LongoMatch.Multimedia.mdp
index 8a98d9f..bd357a0 100644
--- a/LongoMatch.Multimedia/LongoMatch.Multimedia.mdp
+++ b/LongoMatch.Multimedia/LongoMatch.Multimedia.mdp
@@ -25,7 +25,6 @@
<File subtype="Code" buildaction="Compile" name="Capturer/FakeCapturer.cs" />
<File subtype="Code" buildaction="Compile" name="Capturer/GstCameraCapturer.cs" />
<File subtype="Code" buildaction="Compile" name="Capturer/LiveSourceTimer.cs" />
- <File subtype="Code" buildaction="Compile" name="MultimediaFactory.cs" />
<File subtype="Directory" buildaction="Compile" name="Utils" />
<File subtype="Code" buildaction="Compile" name="Utils/TimeString.cs" />
<File subtype="Code" buildaction="Compile" name="Utils/FramesCapturer.cs" />
@@ -62,6 +61,7 @@
<File subtype="Code" buildaction="Compile" name="Converter/ObjectManager.cs" />
<File subtype="Code" buildaction="Compile" name="Utils/Seeker.cs" />
<File subtype="Code" buildaction="Compile" name="Remuxer/MpegRemuxer.cs" />
+ <File subtype="Code" buildaction="Compile" name="Utils/MultimediaFactory.cs" />
</Contents>
<References>
<ProjectReference type="Project" localcopy="True" refto="libcesarplayer" />
diff --git a/LongoMatch.Multimedia/MultimediaFactory.cs b/LongoMatch.Multimedia/Utils/MultimediaFactory.cs
similarity index 96%
rename from LongoMatch.Multimedia/MultimediaFactory.cs
rename to LongoMatch.Multimedia/Utils/MultimediaFactory.cs
index 75253a8..f54208b 100644
--- a/LongoMatch.Multimedia/MultimediaFactory.cs
+++ b/LongoMatch.Multimedia/Utils/MultimediaFactory.cs
@@ -38,8 +38,7 @@ using LongoMatch.Video.Common;
namespace LongoMatch.Video
{
-
- public class MultimediaFactory: IMultimediaToolkit
+ public class MultimediaFactory
{
OperatingSystem oS;
@@ -139,6 +138,10 @@ namespace LongoMatch.Video
}
}
+ public bool FileNeedsRemux (MediaFile file) {
+ return GStreamer.FileNeedsRemux (file);
+ }
+
[DllImport("libgstreamer-0.10.dll")]
static extern void gst_init (int argc, string argv);
public static void InitBackend() {
diff --git a/LongoMatch.Services/LongoMatch.Services.mdp b/LongoMatch.Services/LongoMatch.Services.mdp
index 3e956a6..b7e4e2a 100644
--- a/LongoMatch.Services/LongoMatch.Services.mdp
+++ b/LongoMatch.Services/LongoMatch.Services.mdp
@@ -32,6 +32,8 @@
<File subtype="Code" buildaction="Compile" name="Services/MigrationsManager.cs" />
<File subtype="Code" buildaction="Compile" name="Services/ToolsManager.cs" />
<File subtype="Code" buildaction="Compile" name="Services/FileDB.cs" />
+ <File subtype="Code" buildaction="EmbedAsResource" name="gtk-gui/gui.stetic" />
+ <File subtype="Code" buildaction="Compile" name="gtk-gui/generated.cs" />
</Contents>
<References>
<ProjectReference type="Gac" localcopy="True" refto="System, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" />
diff --git a/LongoMatch.Services/Services/ProjectsManager.cs b/LongoMatch.Services/Services/ProjectsManager.cs
index 6be741f..cb01f87 100644
--- a/LongoMatch.Services/Services/ProjectsManager.cs
+++ b/LongoMatch.Services/Services/ProjectsManager.cs
@@ -55,6 +55,8 @@ namespace LongoMatch.Services
public void ConnectSignals() {
mainController.NewProjectEvent += NewProject;
mainController.OpenProjectEvent += OpenProject;
+ mainController.OpenProjectIDEvent += OpenProjectID;
+ mainController.OpenNewProjectEvent += OpenNewProject;
}
public Project OpenedProject {
@@ -327,55 +329,33 @@ namespace LongoMatch.Services
}
protected virtual void NewProject() {
- Project project;
- ProjectType projectType;
- CaptureSettings captureSettings = new CaptureSettings();
-
Log.Debug("Creating new project");
if (!PromptCloseProject ()) {
return;
}
- /* Show the project selection dialog */
- projectType = guiToolkit.SelectNewProjectType();
-
- if(projectType == ProjectType.CaptureProject) {
- List<Device> devices = multimediaToolkit.VideoDevices;
- if(devices.Count == 0) {
- guiToolkit.ErrorMessage(Catalog.GetString("No capture devices were
found."));
- return;
- }
- project = guiToolkit.NewCaptureProject(Core.DB, ts, devices, out
captureSettings);
- } else if (projectType == ProjectType.FakeCaptureProject) {
- project = guiToolkit.NewFakeProject(Core.DB, ts);
- } else if (projectType == ProjectType.FileProject) {
- project = guiToolkit.NewFileProject(Core.DB, ts);
- if (project != null)
- Core.DB.AddProject(project);
- } else if (projectType == ProjectType.URICaptureProject) {
- project = guiToolkit.NewURICaptureProject(Core.DB, ts, out captureSettings);
- } else {
- project = null;
- }
-
+ guiToolkit.CreateNewProject (ts, multimediaToolkit);
+ }
+
+ protected void OpenNewProject (Project project, ProjectType projectType,
+ CaptureSettings captureSettings)
+ {
if (project != null)
SetProject(project, projectType, captureSettings);
}
protected void OpenProject() {
- Project project = null;
- ProjectDescription projectDescription = null;
-
if (!PromptCloseProject ()) {
return;
}
+ guiToolkit.SelectProject(Core.DB.GetAllProjects());
+ }
+
+ protected void OpenProjectID (Guid projectID) {
+ Project project = null;
- projectDescription = guiToolkit.SelectProject(Core.DB.GetAllProjects());
- if (projectDescription == null)
- return;
-
- project = Core.DB.GetProject(projectDescription.UUID);
+ project = Core.DB.GetProject(projectID);
if (project.Description.File.FilePath == Constants.FAKE_PROJECT) {
/* If it's a fake live project prompt for a video file and
@@ -387,7 +367,7 @@ namespace LongoMatch.Services
Catalog.GetString("You are opening a live project without any video
file associated yet.") +
"\n" + Catalog.GetString("Select a video file in the next step."));
- project = guiToolkit.EditFakeProject(Core.DB, project, ts);
+ guiToolkit.CreateNewProject (ts, multimediaToolkit, project);
if (project == null)
return;
ToolsManager.CreateThumbnails(project, guiToolkit,
multimediaToolkit.GetFramesCapturer());
diff --git a/LongoMatch/LongoMatchGtk.mdp b/LongoMatch/LongoMatchGtk.mdp
index 469f25c..71066c9 100644
--- a/LongoMatch/LongoMatchGtk.mdp
+++ b/LongoMatch/LongoMatchGtk.mdp
@@ -32,5 +32,6 @@
<ProjectReference type="Gac" localcopy="True" refto="Mono.Posix, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=0738eb9f132ed756" />
<ProjectReference type="Project" localcopy="True" refto="LongoMatch.Core" />
<ProjectReference type="Project" localcopy="True" refto="LongoMatch.Addins" />
+ <ProjectReference type="Project" localcopy="True" refto="LongoMatch.GUI.Multimedia" />
</References>
</Project>
\ No newline at end of file
diff --git a/LongoMatch/Main.cs b/LongoMatch/Main.cs
index 7a89d40..1f24889 100644
--- a/LongoMatch/Main.cs
+++ b/LongoMatch/Main.cs
@@ -62,7 +62,7 @@ namespace LongoMatch
AddinsManager manager = new AddinsManager(Config.PluginsConfigDir,
Config.PluginsDir);
manager.LoadConfigModifierAddins();
GUIToolkit guiToolkit = new GUIToolkit(version);
- IMultimediaToolkit multimediaToolkit = new MultimediaFactory();
+ IMultimediaToolkit multimediaToolkit = new MultimediaToolkit();
manager.LoadExportProjectAddins(guiToolkit.MainController);
manager.LoadImportProjectAddins(guiToolkit.MainController);
try {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]