[longomatch] Add a new Preferences panel to list plugins and configure them
- From: Andoni Morales Alastruey <amorales src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [longomatch] Add a new Preferences panel to list plugins and configure them
- Date: Wed, 5 Nov 2014 19:02:47 +0000 (UTC)
commit 2e3a0371691889b6896de0269117ea7722c7ee43
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date: Wed Nov 5 00:19:26 2014 +0100
Add a new Preferences panel to list plugins and configure them
LongoMatch.Addins/AddinsManager.cs | 58 +++-
LongoMatch.Addins/ConfigurablePlugin.cs | 118 ++++++++
.../ExtensionPoints/ILongoMatchPlugin.cs | 2 +
LongoMatch.Addins/LongoMatch.Addins.csproj | 11 +
LongoMatch.Addins/Makefile.am | 4 +-
LongoMatch.Addins/PreferencesAttribute.cs | 32 +++
LongoMatch.Core/LongoMatch.Core.csproj | 2 +-
LongoMatch.GUI/Gui/Component/PluginsPreferences.cs | 104 +++++++
LongoMatch.GUI/Gui/Panel/PreferencesPanel.cs | 3 +
LongoMatch.GUI/LongoMatch.GUI.csproj | 10 +
LongoMatch.GUI/Makefile.am | 2 +
.../LongoMatch.Gui.Component.PluginsPreferences.cs | 212 ++++++++++++++
.../LongoMatch.Gui.Component.TeamTemplateEditor.cs | 1 -
.../LongoMatch.Gui.Panel.NewProjectPanel.cs | 1 -
.../LongoMatch.Gui.Panel.ProjectsManagerPanel.cs | 1 +
.../gtk-gui/LongoMatch.Gui.Panel.WelcomePanel.cs | 1 -
LongoMatch.GUI/gtk-gui/gui.stetic | 295 ++++++++++++++++++++
LongoMatch.GUI/gtk-gui/objects.xml | 4 +
LongoMatch.Plugins.GStreamer/Assembly.cs | 3 +-
LongoMatch.Plugins/Assembly.cs | 1 +
LongoMatch/Main.cs | 23 +-
build/build.environment.mk | 2 +
22 files changed, 857 insertions(+), 33 deletions(-)
---
diff --git a/LongoMatch.Addins/AddinsManager.cs b/LongoMatch.Addins/AddinsManager.cs
index eebd496..cd6c9ea 100644
--- a/LongoMatch.Addins/AddinsManager.cs
+++ b/LongoMatch.Addins/AddinsManager.cs
@@ -16,29 +16,32 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
//
using System;
-using LongoMatch.Addins.ExtensionPoints;
+using System.Collections.Generic;
+using System.Linq;
using LongoMatch.Core.Common;
using LongoMatch.Core.Interfaces;
using LongoMatch.Core.Interfaces.GUI;
using LongoMatch.Core.Interfaces.Multimedia;
using LongoMatch.Core.Store;
-using Mono.Addins;
using LongoMatch.Core.Store.Templates;
+using Mono.Addins;
+using Mono.Addins.Description;
+using LongoMatch.Addins.ExtensionPoints;
[assembly:AddinRoot ("LongoMatch", "1.1")]
namespace LongoMatch.Addins
{
public class AddinsManager
{
-
- public AddinsManager (string configPath, string searchPath)
+
+ public static void Initialize (string configPath, string searchPath)
{
Log.Information ("Initializing addins at path: " + searchPath);
AddinManager.Initialize (configPath, searchPath);
AddinManager.Registry.Update ();
}
- public bool RegisterGStreamerPlugins ()
+ public static bool RegisterGStreamerPlugins ()
{
IGStreamerPluginsProvider[] gstPluginsProvider =
AddinManager.GetExtensionObjects<IGStreamerPluginsProvider> ();
@@ -53,7 +56,7 @@ namespace LongoMatch.Addins
return true;
}
- public void LoadConfigModifierAddins ()
+ public static void LoadConfigModifierAddins ()
{
foreach (IConfigModifier configModifier in
AddinManager.GetExtensionObjects<IConfigModifier> ()) {
try {
@@ -65,13 +68,13 @@ namespace LongoMatch.Addins
}
}
- public void LoadExportProjectAddins (IMainController mainWindow)
+ public static void LoadExportProjectAddins (IMainController mainWindow)
{
foreach (IExportProject exportProject in
AddinManager.GetExtensionObjects<IExportProject> ()) {
try {
Log.Information ("Adding export entry from plugin: " +
exportProject.Name);
mainWindow.AddExportEntry (exportProject.GetMenuEntryName (),
exportProject.GetMenuEntryShortName (),
- new Action<Project, IGUIToolkit>
(exportProject.ExportProject));
+ new Action<Project, IGUIToolkit>
(exportProject.ExportProject));
} catch (Exception ex) {
Log.Error ("Error adding export entry");
Log.Exception (ex);
@@ -79,7 +82,7 @@ namespace LongoMatch.Addins
}
}
- public void LoadImportProjectAddins (IProjectsImporter importer)
+ public static void LoadImportProjectAddins (IProjectsImporter importer)
{
foreach (IImportProject importProject in
AddinManager.GetExtensionObjects<IImportProject> ()) {
Log.Information ("Adding import entry from plugin: " + importProject.Name);
@@ -90,7 +93,7 @@ namespace LongoMatch.Addins
}
}
- public void LoadMultimediaBackendsAddins (IMultimediaToolkit mtoolkit)
+ public static void LoadMultimediaBackendsAddins (IMultimediaToolkit mtoolkit)
{
foreach (IMultimediaBackend backend in
AddinManager.GetExtensionObjects<IMultimediaBackend> ()) {
try {
@@ -103,14 +106,14 @@ namespace LongoMatch.Addins
}
}
- public void ShutdownMultimediaBackends ()
+ public static void ShutdownMultimediaBackends ()
{
foreach (IMultimediaBackend backend in
AddinManager.GetExtensionObjects<IMultimediaBackend> ()) {
backend.Shutdown ();
}
}
-
- public void LoadDashboards (ICategoriesTemplatesProvider provider)
+
+ public static void LoadDashboards (ICategoriesTemplatesProvider provider)
{
foreach (IAnalisysDashboardsProvider plugin in
AddinManager.GetExtensionObjects<IAnalisysDashboardsProvider> ()) {
foreach (Dashboard dashboard in plugin.Dashboards) {
@@ -118,7 +121,34 @@ namespace LongoMatch.Addins
provider.Register (dashboard);
}
}
-
+ }
+
+ public static Dictionary<AddinDescription, List<ConfigurablePlugin>> Plugins {
+ get {
+ HashSet <string> paths;
+ Dictionary<AddinDescription, List<ConfigurablePlugin>> plugins;
+
+ paths = new HashSet<string> ();
+ plugins = new Dictionary<AddinDescription, List<ConfigurablePlugin>> ();
+
+ foreach (Addin addin in AddinManager.Registry.GetAddins ()) {
+ foreach (Extension ext in addin.Description.MainModule.Extensions) {
+ paths.Add (ext.Path);
+ }
+ plugins.Add (addin.Description, new List<ConfigurablePlugin> ());
+ }
+
+ foreach (string path in paths) {
+ foreach (TypeExtensionNode n in AddinManager.GetExtensionNodes
(path)) {
+ var list = plugins.FirstOrDefault (a => a.Key.LocalId ==
n.Addin.Id).Value;
+ var instance = n.GetInstance ();
+ if (instance is ConfigurablePlugin) {
+ list.Add ((ConfigurablePlugin)instance);
+ }
+ }
+ }
+ return plugins;
+ }
}
}
}
diff --git a/LongoMatch.Addins/ConfigurablePlugin.cs b/LongoMatch.Addins/ConfigurablePlugin.cs
new file mode 100644
index 0000000..e7a3b57
--- /dev/null
+++ b/LongoMatch.Addins/ConfigurablePlugin.cs
@@ -0,0 +1,118 @@
+//
+// 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 System.IO;
+using System.Linq;
+using System.Reflection;
+using LongoMatch.Core.Common;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+
+namespace LongoMatch.Addins
+{
+ public class ConfigurablePlugin
+ {
+ public ConfigurablePlugin ()
+ {
+ Properties = new List<AttributeAndProperty> ();
+ foreach (var p in GetType ().GetProperties ()) {
+ var attr = p.GetCustomAttributes (typeof(PreferencesAttribute), true);
+ if (attr.Length != 1) {
+ continue;
+ }
+ Properties.Add (new AttributeAndProperty { Property = p,
+ Attribute = attr.First () as PreferencesAttribute
+ });
+ }
+ Load ();
+ }
+
+ public virtual string Name {
+ get;
+ set;
+ }
+
+ public List <AttributeAndProperty> Properties {
+ get;
+ set;
+ }
+
+ string ConfigFile {
+ get {
+ string filename = String.Format ("{0}.config", Name);
+ filename = filename.Replace (" ", "_");
+ foreach (char c in Path.GetInvalidFileNameChars()) {
+ filename = filename.Replace (c.ToString (), "");
+ }
+ return Path.Combine (Config.ConfigDir, filename);
+ }
+ }
+
+ void Load ()
+ {
+ if (File.Exists (ConfigFile)) {
+ using (StreamReader reader = File.OpenText(ConfigFile)) {
+ JObject o;
+ try {
+ o = (JObject)JToken.ReadFrom (new JsonTextReader (reader));
+ } catch {
+ return;
+ }
+ foreach (AttributeAndProperty prop in Properties) {
+ PropertyInfo info = prop.Property;
+ try {
+ var value = Convert.ChangeType (o [info.Name],
info.PropertyType);
+ info.SetValue (this, value, null);
+ } catch (Exception ex) {
+ Log.Exception (ex);
+ }
+ }
+ }
+ }
+ }
+
+ protected void Save ()
+ {
+ JObject o = new JObject ();
+ foreach (AttributeAndProperty prop in Properties) {
+ o [prop.Property.Name] = new JValue (prop.Property.GetValue (this, null));
+ }
+ try {
+ Serializer.Save (o, ConfigFile);
+ } catch (Exception ex) {
+ Log.Exception (ex);
+ }
+ }
+ }
+
+ public class AttributeAndProperty
+ {
+
+ public PreferencesAttribute Attribute {
+ get;
+ set;
+ }
+
+ public PropertyInfo Property {
+ get;
+ set;
+ }
+ }
+}
+
diff --git a/LongoMatch.Addins/ExtensionPoints/ILongoMatchPlugin.cs
b/LongoMatch.Addins/ExtensionPoints/ILongoMatchPlugin.cs
index 47e16f9..f9b512a 100644
--- a/LongoMatch.Addins/ExtensionPoints/ILongoMatchPlugin.cs
+++ b/LongoMatch.Addins/ExtensionPoints/ILongoMatchPlugin.cs
@@ -15,6 +15,8 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
//
+using Mono.Addins;
+
namespace LongoMatch.Addins.ExtensionPoints
{
public interface ILongoMatchPlugin
diff --git a/LongoMatch.Addins/LongoMatch.Addins.csproj b/LongoMatch.Addins/LongoMatch.Addins.csproj
index fa723fc..351630c 100644
--- a/LongoMatch.Addins/LongoMatch.Addins.csproj
+++ b/LongoMatch.Addins/LongoMatch.Addins.csproj
@@ -35,11 +35,22 @@
<Compile Include="ExtensionPoints\ILongoMatchPlugin.cs" />
<Compile Include="ExtensionPoints\IGStreamerPluginsProvider.cs" />
<Compile Include="ExtensionPoints\IAnalisysDashboardsProvider.cs" />
+ <Compile Include="PreferencesAttribute.cs" />
+ <Compile Include="ConfigurablePlugin.cs" />
</ItemGroup>
<ItemGroup>
<Reference Include="Mono.Addins, Version=0.6.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756">
<Package>mono-addins</Package>
+ <SpecificVersion>False</SpecificVersion>
+ <Private>False</Private>
</Reference>
+ <Reference Include="Newtonsoft.Json, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b9a188c8922137c6">
+ <Private>False</Private>
+ <Package>newtonsoft-json</Package>
+ <SpecificVersion>False</SpecificVersion>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\LongoMatch.Core\LongoMatch.Core.csproj">
diff --git a/LongoMatch.Addins/Makefile.am b/LongoMatch.Addins/Makefile.am
index ddf449a..885df46 100644
--- a/LongoMatch.Addins/Makefile.am
+++ b/LongoMatch.Addins/Makefile.am
@@ -4,13 +4,15 @@ TARGET = library
LINK = $(REF_DEP_LONGOMATCH_ADDINS)
SOURCES = AddinsManager.cs \
+ ConfigurablePlugin.cs \
ExtensionPoints/IAnalisysDashboardsProvider.cs \
ExtensionPoints/IConfigModifier.cs \
ExtensionPoints/IExportProject.cs \
ExtensionPoints/IGStreamerPluginsProvider.cs \
ExtensionPoints/IImportProject.cs \
ExtensionPoints/ILongoMatchPlugin.cs \
- ExtensionPoints/IMultimediaBackend.cs
+ ExtensionPoints/IMultimediaBackend.cs \
+ PreferencesAttribute.cs
RESOURCES =
diff --git a/LongoMatch.Addins/PreferencesAttribute.cs b/LongoMatch.Addins/PreferencesAttribute.cs
new file mode 100644
index 0000000..a9be06f
--- /dev/null
+++ b/LongoMatch.Addins/PreferencesAttribute.cs
@@ -0,0 +1,32 @@
+//
+// 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;
+
+namespace LongoMatch.Addins
+{
+ public class PreferencesAttribute: Attribute
+ {
+ public readonly string description;
+
+ public PreferencesAttribute (string description)
+ {
+ this.description = description;
+ }
+ }
+}
+
diff --git a/LongoMatch.Core/LongoMatch.Core.csproj b/LongoMatch.Core/LongoMatch.Core.csproj
index 34650da..7481e1e 100644
--- a/LongoMatch.Core/LongoMatch.Core.csproj
+++ b/LongoMatch.Core/LongoMatch.Core.csproj
@@ -147,7 +147,6 @@
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
- <Reference Include="System.Xml" />
<Reference Include="Mono.Posix" />
<Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
<Package>gtk-sharp-2.0</Package>
@@ -160,6 +159,7 @@
<Package>newtonsoft-json</Package>
</Reference>
<Reference Include="System.Runtime.Serialization" />
+ <Reference Include="System.Xml" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>
diff --git a/LongoMatch.GUI/Gui/Component/PluginsPreferences.cs
b/LongoMatch.GUI/Gui/Component/PluginsPreferences.cs
new file mode 100644
index 0000000..320a450
--- /dev/null
+++ b/LongoMatch.GUI/Gui/Component/PluginsPreferences.cs
@@ -0,0 +1,104 @@
+//
+// 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.Addins.ExtensionPoints;
+using LongoMatch.Addins;
+using Mono.Addins.Description;
+using System.Collections.Generic;
+
+
+namespace LongoMatch.Gui.Component
+{
+ [System.ComponentModel.ToolboxItem(true)]
+ public partial class PluginsPreferences : Gtk.Bin
+ {
+ ListStore pluginsStore;
+
+ public PluginsPreferences ()
+ {
+ this.Build ();
+ pluginsStore = new ListStore (typeof(string), typeof(AddinDescription), typeof
(ILongoMatchPlugin));
+ treeview1.Model = pluginsStore;
+ treeview1.HeadersVisible = false;
+ treeview1.AppendColumn ("Text", new CellRendererText (), "text", 0);
+ treeview1.EnableGridLines = TreeViewGridLines.None;
+ treeview1.CursorChanged += HandleCursorChanged;
+ FillStore ();
+ }
+
+ void FillStore ()
+ {
+ TreeIter first;
+
+ foreach (var plugin in AddinsManager.Plugins) {
+ pluginsStore.AppendValues (plugin.Key.Name, plugin.Key, plugin.Value);
+ }
+ if (pluginsStore.GetIterFirst (out first)) {
+ treeview1.Selection.SelectIter (first);
+ }
+ }
+
+ void LoadAddin (AddinDescription addin, List<ConfigurablePlugin> plugins)
+ {
+ if (addin == null) {
+ vbox1.Visible = false;
+ return;
+ }
+ vbox1.Visible = true;
+ namelabel.Text = addin.Name;
+ desclabel.Text = addin.Description;
+ authorlabel.Text = addin.Author;
+ filelabel.Text = addin.AddinFile;
+
+ if (plugins != null && plugins.Count > 0) {
+ configframe.Visible = true;
+ foreach (Widget w in configbox.Children) {
+ configbox.Remove (w);
+ w.Destroy ();
+ }
+ foreach (ConfigurablePlugin plugin in plugins) {
+ foreach (AttributeAndProperty attrprop in plugin.Properties) {
+ if (attrprop.Property.PropertyType == typeof(Boolean)) {
+ CheckButton button = new CheckButton
(attrprop.Attribute.description);
+ button.Active = (bool) attrprop.Property.GetValue
(plugin, null);
+ button.Clicked += (sender, e) => {
+ attrprop.Property.SetValue (plugin,
button.Active, null);
+ };
+ button.Show ();
+ configbox.PackStart (button, false, true, 0);
+ }
+ }
+ }
+ } else {
+ configframe.Visible = false;
+ }
+ }
+
+ void HandleCursorChanged (object sender, EventArgs e)
+ {
+ TreeIter iter;
+
+ treeview1.Selection.GetSelected (out iter);
+ LoadAddin (pluginsStore.GetValue (iter, 1) as AddinDescription,
+ pluginsStore.GetValue (iter, 2) as List<ConfigurablePlugin>);
+ }
+
+ }
+}
+
diff --git a/LongoMatch.GUI/Gui/Panel/PreferencesPanel.cs b/LongoMatch.GUI/Gui/Panel/PreferencesPanel.cs
index cf51d7f..b909470 100644
--- a/LongoMatch.GUI/Gui/Panel/PreferencesPanel.cs
+++ b/LongoMatch.GUI/Gui/Panel/PreferencesPanel.cs
@@ -67,6 +67,9 @@ namespace LongoMatch.Gui.Panel
AddPane (Catalog.GetString ("Live analysis"),
Helpers.Misc.LoadIcon ("longomatch-video-device", IconSize.Dialog, 0),
new LiveAnalysisPreferences());
+ AddPane (Catalog.GetString ("Plugins"),
+ Helpers.Misc.LoadIcon ("longomatch-video-device", IconSize.Dialog, 0),
+ new PluginsPreferences());
}
void AddPane (string desc, Pixbuf icon, Widget pane) {
diff --git a/LongoMatch.GUI/LongoMatch.GUI.csproj b/LongoMatch.GUI/LongoMatch.GUI.csproj
index 58090f4..6ba853f 100644
--- a/LongoMatch.GUI/LongoMatch.GUI.csproj
+++ b/LongoMatch.GUI/LongoMatch.GUI.csproj
@@ -192,6 +192,8 @@
<Compile Include="gtk-gui\LongoMatch.Gui.Component.FakeAnalysisComponent.cs" />
<Compile Include="Gui\Component\EventsListWidget.cs" />
<Compile Include="gtk-gui\LongoMatch.Gui.Component.EventsListWidget.cs" />
+ <Compile Include="Gui\Component\PluginsPreferences.cs" />
+ <Compile Include="gtk-gui\LongoMatch.Gui.Component.PluginsPreferences.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="gtk-gui\gui.stetic">
@@ -254,6 +256,10 @@
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
+ <Reference Include="Mono.Addins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756">
+ <Private>False</Private>
+ <Package>mono-addins</Package>
+ </Reference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\LongoMatch.GUI.Multimedia\LongoMatch.GUI.Multimedia.csproj">
@@ -284,6 +290,10 @@
<Project>{AE98609B-353C-4CE4-A5B7-606BB4EE3576}</Project>
<Name>LongoMatch.Drawing.Cairo</Name>
</ProjectReference>
+ <ProjectReference Include="..\LongoMatch.Addins\LongoMatch.Addins.csproj">
+ <Project>{709CCDA6-CA95-4CBD-A986-B96EE0418905}</Project>
+ <Name>LongoMatch.Addins</Name>
+ </ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>
\ No newline at end of file
diff --git a/LongoMatch.GUI/Makefile.am b/LongoMatch.GUI/Makefile.am
index 699c40c..39c843a 100644
--- a/LongoMatch.GUI/Makefile.am
+++ b/LongoMatch.GUI/Makefile.am
@@ -25,6 +25,7 @@ SOURCES = Gui/Cairo.cs \
Gui/Component/PlaysListTreeWidget.cs \
Gui/Component/PlaysPositionViewer.cs \
Gui/Component/PlaysSelectionWidget.cs \
+ Gui/Component/PluginsPreferences.cs \
Gui/Component/ProjectListWidget.cs \
Gui/Component/ProjectPeriods.cs \
Gui/Component/RenderingStateBar.cs \
@@ -105,6 +106,7 @@ SOURCES = Gui/Cairo.cs \
gtk-gui/LongoMatch.Gui.Component.PlaysListTreeWidget.cs \
gtk-gui/LongoMatch.Gui.Component.PlaysPositionViewer.cs \
gtk-gui/LongoMatch.Gui.Component.PlaysSelectionWidget.cs \
+ gtk-gui/LongoMatch.Gui.Component.PluginsPreferences.cs \
gtk-gui/LongoMatch.Gui.Component.ProjectListWidget.cs \
gtk-gui/LongoMatch.Gui.Component.ProjectPeriods.cs \
gtk-gui/LongoMatch.Gui.Component.RenderingStateBar.cs \
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PluginsPreferences.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PluginsPreferences.cs
new file mode 100644
index 0000000..70ad4a9
--- /dev/null
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PluginsPreferences.cs
@@ -0,0 +1,212 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+namespace LongoMatch.Gui.Component
+{
+ public partial class PluginsPreferences
+ {
+ private global::Gtk.HBox hbox1;
+ private global::Gtk.ScrolledWindow GtkScrolledWindow;
+ private global::Gtk.TreeView treeview1;
+ private global::Gtk.VBox vbox1;
+ private global::Gtk.Frame frame1;
+ private global::Gtk.Alignment GtkAlignment;
+ private global::Gtk.Table table1;
+ private global::Gtk.Label authorlabel;
+ private global::Gtk.Label desclabel;
+ private global::Gtk.Label filelabel;
+ private global::Gtk.Label label1;
+ private global::Gtk.Label label2;
+ private global::Gtk.Label label3;
+ private global::Gtk.Label label4;
+ private global::Gtk.Label namelabel;
+ private global::Gtk.Label GtkLabel;
+ private global::Gtk.Frame configframe;
+ private global::Gtk.Alignment GtkAlignment1;
+ private global::Gtk.VBox configbox;
+ private global::Gtk.Label GtkLabel1;
+
+ protected virtual void Build ()
+ {
+ global::Stetic.Gui.Initialize (this);
+ // Widget LongoMatch.Gui.Component.PluginsPreferences
+ global::Stetic.BinContainer.Attach (this);
+ this.Name = "LongoMatch.Gui.Component.PluginsPreferences";
+ // Container child
LongoMatch.Gui.Component.PluginsPreferences.Gtk.Container+ContainerChild
+ this.hbox1 = new global::Gtk.HBox ();
+ this.hbox1.Name = "hbox1";
+ this.hbox1.Spacing = 6;
+ this.hbox1.BorderWidth = ((uint)(20));
+ // Container child hbox1.Gtk.Box+BoxChild
+ this.GtkScrolledWindow = new global::Gtk.ScrolledWindow ();
+ this.GtkScrolledWindow.WidthRequest = 250;
+ this.GtkScrolledWindow.Name = "GtkScrolledWindow";
+ this.GtkScrolledWindow.ShadowType = ((global::Gtk.ShadowType)(1));
+ // Container child GtkScrolledWindow.Gtk.Container+ContainerChild
+ this.treeview1 = new global::Gtk.TreeView ();
+ this.treeview1.CanFocus = true;
+ this.treeview1.Name = "treeview1";
+ this.GtkScrolledWindow.Add (this.treeview1);
+ this.hbox1.Add (this.GtkScrolledWindow);
+ global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox1
[this.GtkScrolledWindow]));
+ w2.Position = 0;
+ w2.Expand = false;
+ // Container child hbox1.Gtk.Box+BoxChild
+ this.vbox1 = new global::Gtk.VBox ();
+ this.vbox1.Name = "vbox1";
+ this.vbox1.Spacing = 6;
+ // Container child vbox1.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.GtkAlignment = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
+ this.GtkAlignment.Name = "GtkAlignment";
+ this.GtkAlignment.LeftPadding = ((uint)(12));
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ this.table1 = new global::Gtk.Table (((uint)(4)), ((uint)(2)), false);
+ this.table1.Name = "table1";
+ this.table1.RowSpacing = ((uint)(6));
+ this.table1.ColumnSpacing = ((uint)(6));
+ this.table1.BorderWidth = ((uint)(6));
+ // Container child table1.Gtk.Table+TableChild
+ this.authorlabel = new global::Gtk.Label ();
+ this.authorlabel.Name = "authorlabel";
+ this.authorlabel.Xalign = 0F;
+ this.table1.Add (this.authorlabel);
+ global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1
[this.authorlabel]));
+ w3.TopAttach = ((uint)(2));
+ w3.BottomAttach = ((uint)(3));
+ w3.LeftAttach = ((uint)(1));
+ w3.RightAttach = ((uint)(2));
+ w3.XOptions = ((global::Gtk.AttachOptions)(4));
+ w3.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.desclabel = new global::Gtk.Label ();
+ this.desclabel.Name = "desclabel";
+ this.desclabel.Xalign = 0F;
+ this.desclabel.Wrap = true;
+ this.desclabel.WidthChars = 70;
+ this.desclabel.MaxWidthChars = 100;
+ this.table1.Add (this.desclabel);
+ global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table1
[this.desclabel]));
+ w4.TopAttach = ((uint)(1));
+ w4.BottomAttach = ((uint)(2));
+ w4.LeftAttach = ((uint)(1));
+ w4.RightAttach = ((uint)(2));
+ w4.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.filelabel = new global::Gtk.Label ();
+ this.filelabel.Name = "filelabel";
+ this.filelabel.Xalign = 0F;
+ this.filelabel.Wrap = true;
+ this.filelabel.Ellipsize = ((global::Pango.EllipsizeMode)(1));
+ this.filelabel.SingleLineMode = true;
+ this.table1.Add (this.filelabel);
+ global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1
[this.filelabel]));
+ w5.TopAttach = ((uint)(3));
+ w5.BottomAttach = ((uint)(4));
+ w5.LeftAttach = ((uint)(1));
+ w5.RightAttach = ((uint)(2));
+ w5.XOptions = ((global::Gtk.AttachOptions)(4));
+ w5.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.label1 = new global::Gtk.Label ();
+ this.label1.Name = "label1";
+ this.label1.Xalign = 0F;
+ this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("Name:");
+ this.table1.Add (this.label1);
+ global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table1
[this.label1]));
+ w6.XOptions = ((global::Gtk.AttachOptions)(4));
+ w6.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.label2 = new global::Gtk.Label ();
+ this.label2.Name = "label2";
+ this.label2.Xalign = 0F;
+ this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("Description:");
+ this.table1.Add (this.label2);
+ global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table1
[this.label2]));
+ w7.TopAttach = ((uint)(1));
+ w7.BottomAttach = ((uint)(2));
+ w7.XOptions = ((global::Gtk.AttachOptions)(4));
+ w7.YOptions = ((global::Gtk.AttachOptions)(1));
+ // Container child table1.Gtk.Table+TableChild
+ this.label3 = new global::Gtk.Label ();
+ this.label3.Name = "label3";
+ this.label3.Xalign = 0F;
+ this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("Author:");
+ this.table1.Add (this.label3);
+ global::Gtk.Table.TableChild w8 = ((global::Gtk.Table.TableChild)(this.table1
[this.label3]));
+ w8.TopAttach = ((uint)(2));
+ w8.BottomAttach = ((uint)(3));
+ w8.XOptions = ((global::Gtk.AttachOptions)(4));
+ w8.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.label4 = new global::Gtk.Label ();
+ this.label4.Name = "label4";
+ this.label4.Xalign = 0F;
+ this.label4.LabelProp = global::Mono.Unix.Catalog.GetString ("File:");
+ this.label4.Wrap = true;
+ this.label4.Ellipsize = ((global::Pango.EllipsizeMode)(1));
+ this.label4.SingleLineMode = true;
+ this.table1.Add (this.label4);
+ global::Gtk.Table.TableChild w9 = ((global::Gtk.Table.TableChild)(this.table1
[this.label4]));
+ w9.TopAttach = ((uint)(3));
+ w9.BottomAttach = ((uint)(4));
+ w9.XOptions = ((global::Gtk.AttachOptions)(4));
+ w9.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.namelabel = new global::Gtk.Label ();
+ this.namelabel.Name = "namelabel";
+ this.namelabel.Xalign = 0F;
+ this.table1.Add (this.namelabel);
+ global::Gtk.Table.TableChild w10 = ((global::Gtk.Table.TableChild)(this.table1
[this.namelabel]));
+ w10.LeftAttach = ((uint)(1));
+ w10.RightAttach = ((uint)(2));
+ w10.YOptions = ((global::Gtk.AttachOptions)(4));
+ this.GtkAlignment.Add (this.table1);
+ this.frame1.Add (this.GtkAlignment);
+ this.GtkLabel = new global::Gtk.Label ();
+ this.GtkLabel.Name = "GtkLabel";
+ this.GtkLabel.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Description</b>");
+ this.GtkLabel.UseMarkup = true;
+ this.frame1.LabelWidget = this.GtkLabel;
+ this.vbox1.Add (this.frame1);
+ global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.frame1]));
+ w13.Position = 0;
+ w13.Expand = false;
+ w13.Fill = false;
+ // Container child vbox1.Gtk.Box+BoxChild
+ this.configframe = new global::Gtk.Frame ();
+ this.configframe.Name = "configframe";
+ this.configframe.ShadowType = ((global::Gtk.ShadowType)(0));
+ // Container child configframe.Gtk.Container+ContainerChild
+ this.GtkAlignment1 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
+ this.GtkAlignment1.Name = "GtkAlignment1";
+ this.GtkAlignment1.LeftPadding = ((uint)(12));
+ // Container child GtkAlignment1.Gtk.Container+ContainerChild
+ this.configbox = new global::Gtk.VBox ();
+ this.configbox.Name = "configbox";
+ this.configbox.Spacing = 6;
+ this.configbox.BorderWidth = ((uint)(6));
+ this.GtkAlignment1.Add (this.configbox);
+ this.configframe.Add (this.GtkAlignment1);
+ this.GtkLabel1 = new global::Gtk.Label ();
+ this.GtkLabel1.Name = "GtkLabel1";
+ this.GtkLabel1.LabelProp = global::Mono.Unix.Catalog.GetString
("<b>Configuration</b>");
+ this.GtkLabel1.UseMarkup = true;
+ this.configframe.LabelWidget = this.GtkLabel1;
+ this.vbox1.Add (this.configframe);
+ global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vbox1
[this.configframe]));
+ w16.Position = 1;
+ this.hbox1.Add (this.vbox1);
+ global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.vbox1]));
+ w17.Position = 1;
+ this.Add (this.hbox1);
+ if ((this.Child != null)) {
+ this.Child.ShowAll ();
+ }
+ this.vbox1.Hide ();
+ this.Hide ();
+ }
+ }
+}
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TeamTemplateEditor.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TeamTemplateEditor.cs
index 891e39f..72e90b2 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TeamTemplateEditor.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TeamTemplateEditor.cs
@@ -300,7 +300,6 @@ namespace LongoMatch.Gui.Component
this.playerpropertyhbox.Spacing = 6;
// Container child playerpropertyhbox.Gtk.Box+BoxChild
this.alignment1 = new global::Gtk.Alignment (0.5F, 0F, 0F, 0F);
- this.alignment1.Name = "alignment1";
// Container child alignment1.Gtk.Container+ContainerChild
this.playerimageframe = new global::Gtk.Frame ();
this.playerimageframe.Name = "playerimageframe";
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs
index 6cb850b..61d6b6c 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs
@@ -280,7 +280,6 @@ namespace LongoMatch.Gui.Panel
this.vbox5.Spacing = 6;
// Container child vbox5.Gtk.Box+BoxChild
this.alignment1 = new global::Gtk.Alignment (0.5F, 0.5F, 1F, 1F);
- this.alignment1.Name = "alignment1";
// Container child alignment1.Gtk.Container+ContainerChild
this.topbox = new global::Gtk.HBox ();
this.topbox.Name = "topbox";
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.ProjectsManagerPanel.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.ProjectsManagerPanel.cs
index 6c5f64b..2ad9183 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.ProjectsManagerPanel.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.ProjectsManagerPanel.cs
@@ -613,6 +613,7 @@ namespace LongoMatch.Gui.Panel
w60.Position = 0;
// Container child rbox.Gtk.Box+BoxChild
this.hbuttonbox1 = new global::Gtk.HButtonBox ();
+ this.hbuttonbox1.Name = "hbuttonbox1";
// Container child hbuttonbox1.Gtk.ButtonBox+ButtonBoxChild
this.savebutton = new global::Gtk.Button ();
this.savebutton.TooltipMarkup = "Save";
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.WelcomePanel.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.WelcomePanel.cs
index a827fc3..7b8e979 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.WelcomePanel.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.WelcomePanel.cs
@@ -49,7 +49,6 @@ namespace LongoMatch.Gui.Panel
w3.Fill = false;
// Container child vbox1.Gtk.Box+BoxChild
this.alignment1 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
- this.alignment1.Name = "alignment1";
// Container child alignment1.Gtk.Container+ContainerChild
this.tablewidget = new global::Gtk.Table (((uint)(3)), ((uint)(3)), false);
this.tablewidget.Name = "tablewidget";
diff --git a/LongoMatch.GUI/gtk-gui/gui.stetic b/LongoMatch.GUI/gtk-gui/gui.stetic
index b7be441..cea7a53 100644
--- a/LongoMatch.GUI/gtk-gui/gui.stetic
+++ b/LongoMatch.GUI/gtk-gui/gui.stetic
@@ -11600,4 +11600,299 @@ You can continue with the current capture, cancel it or save your project.
</widget>
</child>
</widget>
+ <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.PluginsPreferences" design-size="972 347">
+ <property name="MemberName" />
+ <property name="Visible">False</property>
+ <child>
+ <widget class="Gtk.HBox" id="hbox1">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <property name="BorderWidth">20</property>
+ <child>
+ <widget class="Gtk.ScrolledWindow" id="GtkScrolledWindow">
+ <property name="MemberName" />
+ <property name="WidthRequest">250</property>
+ <property name="ShadowType">In</property>
+ <child>
+ <widget class="Gtk.TreeView" id="treeview1">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="ShowScrollbars">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">False</property>
+ <property name="Expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.VBox" id="vbox1">
+ <property name="MemberName" />
+ <property name="Visible">False</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="GtkAlignment">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="Yalign">0</property>
+ <property name="LeftPadding">12</property>
+ <child>
+ <widget class="Gtk.Table" id="table1">
+ <property name="MemberName" />
+ <property name="NRows">4</property>
+ <property name="NColumns">2</property>
+ <property name="RowSpacing">6</property>
+ <property name="ColumnSpacing">6</property>
+ <property name="BorderWidth">6</property>
+ <child>
+ <widget class="Gtk.Label" id="authorlabel">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ </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>
+ <child>
+ <widget class="Gtk.Label" id="desclabel">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="Wrap">True</property>
+ <property name="WidthChars">70</property>
+ <property name="MaxWidthChars">100</property>
+ </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">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="filelabel">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="Wrap">True</property>
+ <property name="Ellipsize">Start</property>
+ <property name="SingleLineMode">True</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">3</property>
+ <property name="BottomAttach">4</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="label1">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">Name:</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.Label" id="label2">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">Description:</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="AutoSize">False</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Expand</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">True</property>
+ <property name="YFill">False</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label3">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">Author:</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.Label" id="label4">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">File:</property>
+ <property name="Wrap">True</property>
+ <property name="Ellipsize">Start</property>
+ <property name="SingleLineMode">True</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">3</property>
+ <property name="BottomAttach">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="namelabel">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ </widget>
+ <packing>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">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>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="GtkLabel">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes"><b>Description</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">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Frame" id="configframe">
+ <property name="MemberName" />
+ <property name="ShadowType">None</property>
+ <child>
+ <widget class="Gtk.Alignment" id="GtkAlignment1">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="Yalign">0</property>
+ <property name="LeftPadding">12</property>
+ <child>
+ <widget class="Gtk.VBox" id="configbox">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <property name="BorderWidth">6</property>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="GtkLabel1">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes"><b>Configuration</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">True</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">False</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 c43f9c0..2fc6805 100644
--- a/LongoMatch.GUI/gtk-gui/objects.xml
+++ b/LongoMatch.GUI/gtk-gui/objects.xml
@@ -368,4 +368,8 @@
<itemgroups />
<signals />
</object>
+ <object type="LongoMatch.Gui.Component.PluginsPreferences" palette-category="General"
allow-children="false" base-type="Gtk.Bin">
+ <itemgroups />
+ <signals />
+ </object>
</objects>
\ No newline at end of file
diff --git a/LongoMatch.Plugins.GStreamer/Assembly.cs b/LongoMatch.Plugins.GStreamer/Assembly.cs
index 9f755b7..256fed3 100644
--- a/LongoMatch.Plugins.GStreamer/Assembly.cs
+++ b/LongoMatch.Plugins.GStreamer/Assembly.cs
@@ -19,5 +19,6 @@ using Mono.Addins;
[assembly:Addin]
[assembly:AddinAuthor ("LongoMatch Project")]
-[assembly:AddinName ("LongoMatch GStreamer restricted plugins")]
+[assembly:AddinName ("Free Codecs")]
+[assembly:AddinDescription ("Free Software codecs for audio/video encoding and decoding with patents and
licence issues")]
[assembly:AddinDependency ("LongoMatch", "1.1")]
diff --git a/LongoMatch.Plugins/Assembly.cs b/LongoMatch.Plugins/Assembly.cs
index 2523872..8a82f97 100644
--- a/LongoMatch.Plugins/Assembly.cs
+++ b/LongoMatch.Plugins/Assembly.cs
@@ -21,4 +21,5 @@ using Mono.Addins;
[assembly:Addin]
[assembly:AddinAuthor ("LongoMatch Project")]
[assembly:AddinName ("LongoMatch plugins")]
+[assembly:AddinDescription ("LongoMatch default import and dashboard plugins")]
[assembly:AddinDependency ("LongoMatch", "1.1")]
\ No newline at end of file
diff --git a/LongoMatch/Main.cs b/LongoMatch/Main.cs
index 6620fca..3043a7d 100644
--- a/LongoMatch/Main.cs
+++ b/LongoMatch/Main.cs
@@ -38,7 +38,6 @@ namespace LongoMatch
public static void Main (string[] args)
{
- AddinsManager manager = null;
CoreServices.Init ();
InitGtk ();
@@ -52,16 +51,16 @@ namespace LongoMatch
Version version = Assembly.GetExecutingAssembly ().GetName ().Version;
try {
- manager = new AddinsManager (Config.PluginsConfigDir, Config.PluginsDir);
- manager.LoadConfigModifierAddins ();
- manager.RegisterGStreamerPlugins ();
+ AddinsManager.Initialize (Config.PluginsConfigDir, Config.PluginsDir);
+ AddinsManager.LoadConfigModifierAddins ();
+ AddinsManager.RegisterGStreamerPlugins ();
Config.DrawingToolkit = new CairoBackend ();
Config.EventsBroker = new EventsBroker ();
IMultimediaToolkit multimediaToolkit = new MultimediaToolkit ();
Config.MultimediaToolkit = multimediaToolkit;
GUIToolkit guiToolkit = new GUIToolkit (version);
- manager.LoadExportProjectAddins (guiToolkit.MainController);
- manager.LoadMultimediaBackendsAddins (multimediaToolkit);
+ AddinsManager.LoadExportProjectAddins (guiToolkit.MainController);
+ AddinsManager.LoadMultimediaBackendsAddins (multimediaToolkit);
try {
CoreServices.Start (guiToolkit, multimediaToolkit);
} catch (DBLockedException locked) {
@@ -71,17 +70,15 @@ namespace LongoMatch
Log.Exception (locked);
return;
}
- manager.LoadDashboards (Config.CategoriesTemplatesProvider);
- manager.LoadImportProjectAddins (CoreServices.ProjectsImporter);
+ AddinsManager.LoadDashboards (Config.CategoriesTemplatesProvider);
+ AddinsManager.LoadImportProjectAddins (CoreServices.ProjectsImporter);
Application.Run ();
} catch (Exception ex) {
ProcessExecutionError (ex);
} finally {
- if (manager != null) {
- try {
- manager.ShutdownMultimediaBackends ();
- } catch {
- }
+ try {
+ AddinsManager.ShutdownMultimediaBackends ();
+ } catch {
}
}
}
diff --git a/build/build.environment.mk b/build/build.environment.mk
index 941c765..295c233 100644
--- a/build/build.environment.mk
+++ b/build/build.environment.mk
@@ -79,9 +79,11 @@ REF_DEP_LONGOMATCH_GUI_HELPERS = \
REF_DEP_LONGOMATCH_GUI = \
$(LINK_SYSTEM_DRAWING) \
$(LINK_MONO_POSIX) \
+ $(LINK_MONO_ADDINS) \
$(LINK_GLIB) \
$(LINK_GTK) \
$(LINK_CAIRO) \
+ $(LINK_LONGOMATCH_ADDINS) \
$(LINK_LONGOMATCH_CORE) \
$(LINK_LONGOMATCH_MULTIMEDIA) \
$(LINK_LONGOMATCH_GUI_MULTIMEDIA) \
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]