[longomatch] Add Link properties editor panel.



commit 7ae8e60b33258e57f2f79d078afd75b6e9ccc3a6
Author: Xavi Artigas <xartigas fluendo com>
Date:   Tue Apr 14 13:40:17 2015 +0200

    Add Link properties editor panel.

 LongoMatch.GUI/Gui/Component/DashboardWidget.cs    |   32 ++-
 LongoMatch.GUI/Gui/Component/LinkProperties.cs     |   64 ++++
 LongoMatch.GUI/LongoMatch.GUI.csproj               |    2 +
 LongoMatch.GUI/Makefile.am                         |    2 +
 .../LongoMatch.Gui.Component.DashboardWidget.cs    |   61 +++--
 .../LongoMatch.Gui.Component.LinkProperties.cs     |  236 +++++++++++++
 LongoMatch.GUI/gtk-gui/gui.stetic                  |  364 +++++++++++++++++++-
 7 files changed, 726 insertions(+), 35 deletions(-)
---
diff --git a/LongoMatch.GUI/Gui/Component/DashboardWidget.cs b/LongoMatch.GUI/Gui/Component/DashboardWidget.cs
index bd8669d..7ad486c 100644
--- a/LongoMatch.GUI/Gui/Component/DashboardWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/DashboardWidget.cs
@@ -39,6 +39,10 @@ namespace LongoMatch.Gui.Component
        [System.ComponentModel.ToolboxItem (true)]
        public partial class DashboardWidget : Gtk.Bin
        {
+               const int PROPERTIES_NOTEBOOK_PAGE_EMPTY = 0;
+               const int PROPERTIES_NOTEBOOK_PAGE_TAGS = 1;
+               const int PROPERTIES_NOTEBOOK_PAGE_LINKS = 2;
+
                public event NewEventHandler NewTagEvent;
 
                DashboardMode mode;
@@ -67,6 +71,7 @@ namespace LongoMatch.Gui.Component
                        tagger.ShowMenuEvent += HandleShowMenuEvent;
                        tagger.NewTagEvent += HandleNewTagEvent;
                        tagger.EditButtonTagsEvent += EditEventSubcategories;
+                       tagger.ActionLinksSelectedEvent += HandleActionLinksSelectedEvent;
                        drawingarea.CanFocus = true;
                        drawingarea.KeyPressEvent += HandleKeyPressEvent;
                        fieldeventbox.ButtonPressEvent += HandleFieldButtonPressEvent;
@@ -87,8 +92,8 @@ namespace LongoMatch.Gui.Component
                        FitMode = FitMode.Original;
                        Edited = false;
                        Mode = DashboardMode.Code;
-                       // Initialize to a sane default value.
-                       propertiesnotebook.Page = 1;
+                       // Initialize to the empty notebook page.
+                       propertiesnotebook.Page = PROPERTIES_NOTEBOOK_PAGE_EMPTY;
                }
 
                protected override void OnDestroyed ()
@@ -128,10 +133,10 @@ namespace LongoMatch.Gui.Component
 
                public bool Edited {
                        get {
-                               return edited || tagger.Edited || tagproperties.Edited;
+                               return edited || tagger.Edited || tagproperties.Edited || 
linkproperties.Edited;
                        }
                        set {
-                               edited = tagger.Edited = tagproperties.Edited = value;
+                               edited = tagger.Edited = tagproperties.Edited = linkproperties.Edited = value;
                        }
                }
 
@@ -159,7 +164,7 @@ namespace LongoMatch.Gui.Component
                                Edited = false;
                                // Start with disabled widget until something get selected
                                tagproperties.Tagger = null;
-                               propertiesnotebook.Page = 1;
+                               propertiesnotebook.Page = PROPERTIES_NOTEBOOK_PAGE_EMPTY;
                                tagproperties.Dashboard = value;
                                popupbutton.Active = value.DisablePopupWindow;
                        }
@@ -290,7 +295,7 @@ namespace LongoMatch.Gui.Component
                        linksbutton = new ToggleToolButton ();
                        linksbutton.IconWidget = linksimage;
                        linksbutton.Toggled += HandleLinksToggled;
-                       linksbutton.TooltipText = Catalog.GetString ("Edit actions links");
+                       linksbutton.TooltipText = Catalog.GetString ("Edit action links");
                        toolbar.Add (linksbutton);
                        toolbar.Add (new SeparatorToolItem ());
 
@@ -370,6 +375,7 @@ namespace LongoMatch.Gui.Component
                                return;
                        }
                        tagger.ShowLinks = linksbutton.Active;
+                       propertiesnotebook.Page = PROPERTIES_NOTEBOOK_PAGE_EMPTY;
                }
 
                void HandleTaggersSelectedEvent (List<DashboardButton> taggers)
@@ -377,11 +383,21 @@ namespace LongoMatch.Gui.Component
                        if (taggers.Count == 1) {
                                selected = taggers [0];
                                tagproperties.Tagger = taggers [0];
-                               propertiesnotebook.Page = 0;
+                               propertiesnotebook.Page = PROPERTIES_NOTEBOOK_PAGE_TAGS;
                        } else {
                                selected = null;
                                tagproperties.Tagger = null;
-                               propertiesnotebook.Page = 1;
+                               propertiesnotebook.Page = PROPERTIES_NOTEBOOK_PAGE_EMPTY;
+                       }
+               }
+
+               void HandleActionLinksSelectedEvent (List<ActionLink> actionLinks)
+               {
+                       if (actionLinks.Count == 1) {
+                               linkproperties.Link = actionLinks [0];
+                               propertiesnotebook.Page = PROPERTIES_NOTEBOOK_PAGE_LINKS;
+                       } else {
+                               propertiesnotebook.Page = PROPERTIES_NOTEBOOK_PAGE_EMPTY;
                        }
                }
 
diff --git a/LongoMatch.GUI/Gui/Component/LinkProperties.cs b/LongoMatch.GUI/Gui/Component/LinkProperties.cs
new file mode 100644
index 0000000..c20cb4e
--- /dev/null
+++ b/LongoMatch.GUI/Gui/Component/LinkProperties.cs
@@ -0,0 +1,64 @@
+//
+//  Copyright (C) 2015 Fluendo S.A.
+//
+
+using System;
+using LongoMatch.Core.Common;
+using LongoMatch.Core.Store;
+
+namespace LongoMatch.Gui.Component
+{
+       [System.ComponentModel.ToolboxItem (true)]
+       public partial class LinkProperties : Gtk.Bin
+       {
+               ActionLink link;
+
+               public LinkProperties ()
+               {
+                       this.Build ();
+
+                       Edited = false;
+
+                       comboboxaction.Changed += (sender, e) => {
+                               link.Action = (LinkAction)comboboxaction.Active;
+                               Edited = true;
+                       };
+                       comboboxteamaction.Changed += (sender, e) => {
+                               link.TeamAction = (TeamLinkAction)comboboxteamaction.Active;
+                               Edited = true;
+                       };
+                       checkbuttonkeepplayertags.Toggled += (sender, e) => {
+                               link.KeepPlayerTags = checkbuttonkeepplayertags.Active;
+                               Edited = true;
+                       };
+                       checkbuttonkeepcommontags.Toggled += (sender, e) => {
+                               link.KeepCommonTags = checkbuttonkeepcommontags.Active;
+                               Edited = true;
+                       };
+               }
+
+               public bool Edited { get; set; }
+
+               public ActionLink Link {
+                       set {
+                               link = value;
+                               UpdateUI ();
+                       }
+                       get {
+                               return link;
+                       }
+               }
+
+               void UpdateUI () {
+                       entryfrom.Text = Link.SourceButton.Name;
+                       entryfromtags.Text = String.Join (", ", Link.SourceTags);
+                       entryto.Text = Link.DestinationButton.Name;
+                       entrytotags.Text = String.Join (", ", Link.DestinationTags);
+                       comboboxaction.Active = (int)link.Action;
+                       comboboxteamaction.Active = (int)link.TeamAction;
+                       checkbuttonkeepplayertags.Active = link.KeepPlayerTags;
+                       checkbuttonkeepcommontags.Active = link.KeepCommonTags;
+               }
+       }
+}
+
diff --git a/LongoMatch.GUI/LongoMatch.GUI.csproj b/LongoMatch.GUI/LongoMatch.GUI.csproj
index 74c8343..0a52cba 100644
--- a/LongoMatch.GUI/LongoMatch.GUI.csproj
+++ b/LongoMatch.GUI/LongoMatch.GUI.csproj
@@ -182,6 +182,8 @@
     </Compile>
     <Compile Include="Gui\Component\SynchronizationWidget.cs" />
     <Compile Include="gtk-gui\LongoMatch.Gui.Component.SynchronizationWidget.cs" />
+    <Compile Include="Gui\Component\LinkProperties.cs" />
+    <Compile Include="gtk-gui\LongoMatch.Gui.Component.LinkProperties.cs" />
   </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="gtk-gui\gui.stetic">
diff --git a/LongoMatch.GUI/Makefile.am b/LongoMatch.GUI/Makefile.am
index 40913b9..b181ed2 100644
--- a/LongoMatch.GUI/Makefile.am
+++ b/LongoMatch.GUI/Makefile.am
@@ -17,6 +17,7 @@ SOURCES = ../AssemblyInfo/AssemblyInfo.cs \
        Gui/Component/GameDescriptionHeader.cs \
        Gui/Component/GeneralPreferencesPanel.cs \
        Gui/Component/HotkeysConfiguration.cs \
+       Gui/Component/LinkProperties.cs \
        Gui/Component/LiveAnalysisPreferences.cs \
        Gui/Component/MediaFileChooser.cs \
        Gui/Component/MediaFileSetSelection.cs \
@@ -90,6 +91,7 @@ SOURCES = ../AssemblyInfo/AssemblyInfo.cs \
        gtk-gui/LongoMatch.Gui.Component.GameDescriptionHeader.cs \
        gtk-gui/LongoMatch.Gui.Component.GeneralPreferencesPanel.cs \
        gtk-gui/LongoMatch.Gui.Component.HotkeysConfiguration.cs \
+       gtk-gui/LongoMatch.Gui.Component.LinkProperties.cs \
        gtk-gui/LongoMatch.Gui.Component.LiveAnalysisPreferences.cs \
        gtk-gui/LongoMatch.Gui.Component.MediaFileChooser.cs \
        gtk-gui/LongoMatch.Gui.Component.MediaFileSetSelection.cs \
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.DashboardWidget.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.DashboardWidget.cs
index bf4654d..3d1eb9d 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.DashboardWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.DashboardWidget.cs
@@ -114,11 +114,15 @@ namespace LongoMatch.Gui.Component
                
                private global::Gtk.Notebook propertiesnotebook;
                
-               private global::LongoMatch.Gui.Component.CategoryProperties tagproperties;
-               
                private global::Gtk.Label label2;
                
+               private global::LongoMatch.Gui.Component.CategoryProperties tagproperties;
+               
                private global::Gtk.Label label3;
+               
+               private global::LongoMatch.Gui.Component.LinkProperties linkproperties;
+               
+               private global::Gtk.Label label5;
 
                protected virtual void Build ()
                {
@@ -542,46 +546,61 @@ namespace LongoMatch.Gui.Component
                        this.propertiesnotebook = new global::Gtk.Notebook ();
                        this.propertiesnotebook.CanFocus = true;
                        this.propertiesnotebook.Name = "propertiesnotebook";
-                       this.propertiesnotebook.CurrentPage = 0;
+                       this.propertiesnotebook.CurrentPage = 2;
                        this.propertiesnotebook.ShowBorder = false;
                        this.propertiesnotebook.ShowTabs = false;
+                       // Notebook tab
+                       global::Gtk.Label w51 = new global::Gtk.Label ();
+                       w51.Visible = true;
+                       this.propertiesnotebook.Add (w51);
+                       this.label2 = new global::Gtk.Label ();
+                       this.label2.Name = "label2";
+                       this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("page1");
+                       this.propertiesnotebook.SetTabLabel (w51, this.label2);
+                       this.label2.ShowAll ();
                        // Container child propertiesnotebook.Gtk.Notebook+NotebookChild
                        this.tagproperties = new global::LongoMatch.Gui.Component.CategoryProperties ();
                        this.tagproperties.Events = ((global::Gdk.EventMask)(256));
                        this.tagproperties.Name = "tagproperties";
                        this.tagproperties.Edited = false;
                        this.propertiesnotebook.Add (this.tagproperties);
+                       global::Gtk.Notebook.NotebookChild w52 = 
((global::Gtk.Notebook.NotebookChild)(this.propertiesnotebook [this.tagproperties]));
+                       w52.Position = 1;
                        // Notebook tab
-                       this.label2 = new global::Gtk.Label ();
-                       this.label2.Name = "label2";
-                       this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("page1");
-                       this.propertiesnotebook.SetTabLabel (this.tagproperties, this.label2);
-                       this.label2.ShowAll ();
-                       // Notebook tab
-                       global::Gtk.Label w52 = new global::Gtk.Label ();
-                       w52.Visible = true;
-                       this.propertiesnotebook.Add (w52);
                        this.label3 = new global::Gtk.Label ();
                        this.label3.Name = "label3";
                        this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("page2");
-                       this.propertiesnotebook.SetTabLabel (w52, this.label3);
+                       this.propertiesnotebook.SetTabLabel (this.tagproperties, this.label3);
                        this.label3.ShowAll ();
+                       // Container child propertiesnotebook.Gtk.Notebook+NotebookChild
+                       this.linkproperties = new global::LongoMatch.Gui.Component.LinkProperties ();
+                       this.linkproperties.Events = ((global::Gdk.EventMask)(256));
+                       this.linkproperties.Name = "linkproperties";
+                       this.propertiesnotebook.Add (this.linkproperties);
+                       global::Gtk.Notebook.NotebookChild w53 = 
((global::Gtk.Notebook.NotebookChild)(this.propertiesnotebook [this.linkproperties]));
+                       w53.Position = 2;
+                       // Notebook tab
+                       this.label5 = new global::Gtk.Label ();
+                       this.label5.Name = "label5";
+                       this.label5.LabelProp = global::Mono.Unix.Catalog.GetString ("page3");
+                       this.propertiesnotebook.SetTabLabel (this.linkproperties, this.label5);
+                       this.label5.ShowAll ();
                        this.tagpropertiesalignment.Add (this.propertiesnotebook);
                        w50.Add (this.tagpropertiesalignment);
                        this.propertiesscrolledwindow.Add (w50);
                        this.vbox10.Add (this.propertiesscrolledwindow);
-                       global::Gtk.Box.BoxChild w56 = ((global::Gtk.Box.BoxChild)(this.vbox10 
[this.propertiesscrolledwindow]));
-                       w56.Position = 2;
+                       global::Gtk.Box.BoxChild w57 = ((global::Gtk.Box.BoxChild)(this.vbox10 
[this.propertiesscrolledwindow]));
+                       w57.Position = 2;
                        this.propertiesalignment.Add (this.vbox10);
                        this.propertiesframe.Add (this.propertiesalignment);
                        this.rightbox.Add (this.propertiesframe);
-                       global::Gtk.Box.BoxChild w59 = ((global::Gtk.Box.BoxChild)(this.rightbox 
[this.propertiesframe]));
-                       w59.Position = 0;
+                       global::Gtk.Box.BoxChild w60 = ((global::Gtk.Box.BoxChild)(this.rightbox 
[this.propertiesframe]));
+                       w60.Position = 0;
                        this.hbox2.Add (this.rightbox);
-                       global::Gtk.Box.BoxChild w60 = ((global::Gtk.Box.BoxChild)(this.hbox2 
[this.rightbox]));
-                       w60.Position = 1;
-                       w60.Expand = false;
-                       w60.Fill = false;
+                       global::Gtk.Box.BoxChild w61 = ((global::Gtk.Box.BoxChild)(this.hbox2 
[this.rightbox]));
+                       w61.Position = 1;
+                       w61.Expand = false;
+                       w61.Fill = false;
                        this.Add (this.hbox2);
                        if ((this.Child != null)) {
                                this.Child.ShowAll ();
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.LinkProperties.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.LinkProperties.cs
new file mode 100644
index 0000000..c71ed08
--- /dev/null
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.LinkProperties.cs
@@ -0,0 +1,236 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+namespace LongoMatch.Gui.Component
+{
+       public partial class LinkProperties
+       {
+               private global::Gtk.VBox totalbox;
+               
+               private global::Gtk.Table table1;
+               
+               private global::Gtk.CheckButton checkbuttonkeepcommontags;
+               
+               private global::Gtk.CheckButton checkbuttonkeepplayertags;
+               
+               private global::Gtk.ComboBox comboboxaction;
+               
+               private global::Gtk.ComboBox comboboxteamaction;
+               
+               private global::Gtk.Entry entryfrom;
+               
+               private global::Gtk.Entry entryfromtags;
+               
+               private global::Gtk.Entry entryto;
+               
+               private global::Gtk.Entry entrytotags;
+               
+               private global::Gtk.Label labelaction;
+               
+               private global::Gtk.Label labelfrom;
+               
+               private global::Gtk.Label labelkeepcommontags;
+               
+               private global::Gtk.Label labelkeepplayertags;
+               
+               private global::Gtk.Label labelteamaction;
+               
+               private global::Gtk.Label labelto;
+
+               protected virtual void Build ()
+               {
+                       global::Stetic.Gui.Initialize (this);
+                       // Widget LongoMatch.Gui.Component.LinkProperties
+                       global::Stetic.BinContainer.Attach (this);
+                       this.Name = "LongoMatch.Gui.Component.LinkProperties";
+                       // Container child 
LongoMatch.Gui.Component.LinkProperties.Gtk.Container+ContainerChild
+                       this.totalbox = new global::Gtk.VBox ();
+                       this.totalbox.Name = "totalbox";
+                       this.totalbox.Spacing = 6;
+                       // Container child totalbox.Gtk.Box+BoxChild
+                       this.table1 = new global::Gtk.Table (((uint)(8)), ((uint)(2)), false);
+                       this.table1.Name = "table1";
+                       this.table1.RowSpacing = ((uint)(6));
+                       this.table1.ColumnSpacing = ((uint)(6));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.checkbuttonkeepcommontags = new global::Gtk.CheckButton ();
+                       this.checkbuttonkeepcommontags.Name = "checkbuttonkeepcommontags";
+                       this.checkbuttonkeepcommontags.Label = "";
+                       this.checkbuttonkeepcommontags.DrawIndicator = true;
+                       this.checkbuttonkeepcommontags.UseUnderline = true;
+                       this.table1.Add (this.checkbuttonkeepcommontags);
+                       global::Gtk.Table.TableChild w1 = ((global::Gtk.Table.TableChild)(this.table1 
[this.checkbuttonkeepcommontags]));
+                       w1.TopAttach = ((uint)(7));
+                       w1.BottomAttach = ((uint)(8));
+                       w1.LeftAttach = ((uint)(1));
+                       w1.RightAttach = ((uint)(2));
+                       w1.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w1.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.checkbuttonkeepplayertags = new global::Gtk.CheckButton ();
+                       this.checkbuttonkeepplayertags.Name = "checkbuttonkeepplayertags";
+                       this.checkbuttonkeepplayertags.Label = "";
+                       this.checkbuttonkeepplayertags.DrawIndicator = true;
+                       this.checkbuttonkeepplayertags.UseUnderline = true;
+                       this.checkbuttonkeepplayertags.FocusOnClick = false;
+                       this.table1.Add (this.checkbuttonkeepplayertags);
+                       global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1 
[this.checkbuttonkeepplayertags]));
+                       w2.TopAttach = ((uint)(6));
+                       w2.BottomAttach = ((uint)(7));
+                       w2.LeftAttach = ((uint)(1));
+                       w2.RightAttach = ((uint)(2));
+                       w2.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w2.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.comboboxaction = global::Gtk.ComboBox.NewText ();
+                       this.comboboxaction.AppendText (global::Mono.Unix.Catalog.GetString ("Toggle"));
+                       this.comboboxaction.AppendText (global::Mono.Unix.Catalog.GetString ("Replicate"));
+                       this.comboboxaction.Name = "comboboxaction";
+                       this.comboboxaction.FocusOnClick = false;
+                       this.table1.Add (this.comboboxaction);
+                       global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1 
[this.comboboxaction]));
+                       w3.TopAttach = ((uint)(4));
+                       w3.BottomAttach = ((uint)(5));
+                       w3.LeftAttach = ((uint)(1));
+                       w3.RightAttach = ((uint)(2));
+                       w3.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.comboboxteamaction = global::Gtk.ComboBox.NewText ();
+                       this.comboboxteamaction.AppendText (global::Mono.Unix.Catalog.GetString ("Clear"));
+                       this.comboboxteamaction.AppendText (global::Mono.Unix.Catalog.GetString ("Keep"));
+                       this.comboboxteamaction.AppendText (global::Mono.Unix.Catalog.GetString ("Invert"));
+                       this.comboboxteamaction.Name = "comboboxteamaction";
+                       this.table1.Add (this.comboboxteamaction);
+                       global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table1 
[this.comboboxteamaction]));
+                       w4.TopAttach = ((uint)(5));
+                       w4.BottomAttach = ((uint)(6));
+                       w4.LeftAttach = ((uint)(1));
+                       w4.RightAttach = ((uint)(2));
+                       w4.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w4.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.entryfrom = new global::Gtk.Entry ();
+                       this.entryfrom.Name = "entryfrom";
+                       this.entryfrom.IsEditable = false;
+                       this.entryfrom.InvisibleChar = '●';
+                       this.table1.Add (this.entryfrom);
+                       global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1 
[this.entryfrom]));
+                       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.entryfromtags = new global::Gtk.Entry ();
+                       this.entryfromtags.Name = "entryfromtags";
+                       this.entryfromtags.IsEditable = false;
+                       this.entryfromtags.InvisibleChar = '●';
+                       this.table1.Add (this.entryfromtags);
+                       global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table1 
[this.entryfromtags]));
+                       w6.TopAttach = ((uint)(1));
+                       w6.BottomAttach = ((uint)(2));
+                       w6.LeftAttach = ((uint)(1));
+                       w6.RightAttach = ((uint)(2));
+                       w6.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w6.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.entryto = new global::Gtk.Entry ();
+                       this.entryto.Name = "entryto";
+                       this.entryto.IsEditable = false;
+                       this.entryto.InvisibleChar = '●';
+                       this.table1.Add (this.entryto);
+                       global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table1 
[this.entryto]));
+                       w7.TopAttach = ((uint)(2));
+                       w7.BottomAttach = ((uint)(3));
+                       w7.LeftAttach = ((uint)(1));
+                       w7.RightAttach = ((uint)(2));
+                       w7.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w7.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.entrytotags = new global::Gtk.Entry ();
+                       this.entrytotags.Name = "entrytotags";
+                       this.entrytotags.IsEditable = false;
+                       this.entrytotags.InvisibleChar = '●';
+                       this.table1.Add (this.entrytotags);
+                       global::Gtk.Table.TableChild w8 = ((global::Gtk.Table.TableChild)(this.table1 
[this.entrytotags]));
+                       w8.TopAttach = ((uint)(3));
+                       w8.BottomAttach = ((uint)(4));
+                       w8.LeftAttach = ((uint)(1));
+                       w8.RightAttach = ((uint)(2));
+                       w8.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w8.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.labelaction = new global::Gtk.Label ();
+                       this.labelaction.Name = "labelaction";
+                       this.labelaction.Xalign = 1F;
+                       this.labelaction.LabelProp = global::Mono.Unix.Catalog.GetString ("Action");
+                       this.table1.Add (this.labelaction);
+                       global::Gtk.Table.TableChild w9 = ((global::Gtk.Table.TableChild)(this.table1 
[this.labelaction]));
+                       w9.TopAttach = ((uint)(4));
+                       w9.BottomAttach = ((uint)(5));
+                       w9.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w9.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.labelfrom = new global::Gtk.Label ();
+                       this.labelfrom.Name = "labelfrom";
+                       this.labelfrom.Xalign = 1F;
+                       this.labelfrom.LabelProp = global::Mono.Unix.Catalog.GetString ("From");
+                       this.table1.Add (this.labelfrom);
+                       global::Gtk.Table.TableChild w10 = ((global::Gtk.Table.TableChild)(this.table1 
[this.labelfrom]));
+                       w10.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w10.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.labelkeepcommontags = new global::Gtk.Label ();
+                       this.labelkeepcommontags.Name = "labelkeepcommontags";
+                       this.labelkeepcommontags.Xalign = 1F;
+                       this.labelkeepcommontags.LabelProp = global::Mono.Unix.Catalog.GetString ("Keep 
common tags");
+                       this.table1.Add (this.labelkeepcommontags);
+                       global::Gtk.Table.TableChild w11 = ((global::Gtk.Table.TableChild)(this.table1 
[this.labelkeepcommontags]));
+                       w11.TopAttach = ((uint)(7));
+                       w11.BottomAttach = ((uint)(8));
+                       w11.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w11.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.labelkeepplayertags = new global::Gtk.Label ();
+                       this.labelkeepplayertags.Name = "labelkeepplayertags";
+                       this.labelkeepplayertags.Xalign = 1F;
+                       this.labelkeepplayertags.LabelProp = global::Mono.Unix.Catalog.GetString ("Keep 
player tags");
+                       this.table1.Add (this.labelkeepplayertags);
+                       global::Gtk.Table.TableChild w12 = ((global::Gtk.Table.TableChild)(this.table1 
[this.labelkeepplayertags]));
+                       w12.TopAttach = ((uint)(6));
+                       w12.BottomAttach = ((uint)(7));
+                       w12.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w12.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.labelteamaction = new global::Gtk.Label ();
+                       this.labelteamaction.Name = "labelteamaction";
+                       this.labelteamaction.Xalign = 1F;
+                       this.labelteamaction.LabelProp = global::Mono.Unix.Catalog.GetString ("Team action");
+                       this.table1.Add (this.labelteamaction);
+                       global::Gtk.Table.TableChild w13 = ((global::Gtk.Table.TableChild)(this.table1 
[this.labelteamaction]));
+                       w13.TopAttach = ((uint)(5));
+                       w13.BottomAttach = ((uint)(6));
+                       w13.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w13.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.labelto = new global::Gtk.Label ();
+                       this.labelto.Name = "labelto";
+                       this.labelto.Xalign = 1F;
+                       this.labelto.LabelProp = global::Mono.Unix.Catalog.GetString ("To");
+                       this.table1.Add (this.labelto);
+                       global::Gtk.Table.TableChild w14 = ((global::Gtk.Table.TableChild)(this.table1 
[this.labelto]));
+                       w14.TopAttach = ((uint)(2));
+                       w14.BottomAttach = ((uint)(3));
+                       w14.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w14.YOptions = ((global::Gtk.AttachOptions)(4));
+                       this.totalbox.Add (this.table1);
+                       global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.totalbox 
[this.table1]));
+                       w15.Position = 0;
+                       w15.Expand = false;
+                       w15.Fill = false;
+                       this.Add (this.totalbox);
+                       if ((this.Child != null)) {
+                               this.Child.ShowAll ();
+                       }
+                       this.Hide ();
+               }
+       }
+}
diff --git a/LongoMatch.GUI/gtk-gui/gui.stetic b/LongoMatch.GUI/gtk-gui/gui.stetic
index c60f085..58a38a8 100644
--- a/LongoMatch.GUI/gtk-gui/gui.stetic
+++ b/LongoMatch.GUI/gtk-gui/gui.stetic
@@ -746,32 +746,53 @@ Sort by competition</property>
                                       <widget class="Gtk.Notebook" id="propertiesnotebook">
                                         <property name="MemberName" />
                                         <property name="CanFocus">True</property>
-                                        <property name="CurrentPage">0</property>
+                                        <property name="CurrentPage">2</property>
                                         <property name="ShowBorder">False</property>
                                         <property name="ShowTabs">False</property>
                                         <child>
+                                          <placeholder />
+                                        </child>
+                                        <child>
+                                          <widget class="Gtk.Label" id="label2">
+                                            <property name="MemberName" />
+                                            <property name="LabelProp" translatable="yes">page1</property>
+                                          </widget>
+                                          <packing>
+                                            <property name="type">tab</property>
+                                          </packing>
+                                        </child>
+                                        <child>
                                           <widget class="LongoMatch.Gui.Component.CategoryProperties" 
id="tagproperties">
                                             <property name="MemberName" />
                                             <property name="Events">ButtonPressMask</property>
                                             <property name="Edited">False</property>
                                           </widget>
+                                          <packing>
+                                            <property name="Position">1</property>
+                                          </packing>
                                         </child>
                                         <child>
-                                          <widget class="Gtk.Label" id="label2">
+                                          <widget class="Gtk.Label" id="label3">
                                             <property name="MemberName" />
-                                            <property name="LabelProp" translatable="yes">page1</property>
+                                            <property name="LabelProp" translatable="yes">page2</property>
                                           </widget>
                                           <packing>
                                             <property name="type">tab</property>
                                           </packing>
                                         </child>
                                         <child>
-                                          <placeholder />
+                                          <widget class="LongoMatch.Gui.Component.LinkProperties" 
id="linkproperties">
+                                            <property name="MemberName" />
+                                            <property name="Events">ButtonPressMask</property>
+                                          </widget>
+                                          <packing>
+                                            <property name="Position">2</property>
+                                          </packing>
                                         </child>
                                         <child>
-                                          <widget class="Gtk.Label" id="label3">
+                                          <widget class="Gtk.Label" id="label5">
                                             <property name="MemberName" />
-                                            <property name="LabelProp" translatable="yes">page2</property>
+                                            <property name="LabelProp" translatable="yes">page3</property>
                                           </widget>
                                           <packing>
                                             <property name="type">tab</property>
@@ -11778,4 +11799,335 @@ To avoid this, and to enjoy many additional functional benefits, we encourage yo
       </widget>
     </child>
   </widget>
+  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.LinkProperties" design-size="300 300">
+    <property name="MemberName" />
+    <property name="Visible">False</property>
+    <child>
+      <widget class="Gtk.VBox" id="totalbox">
+        <property name="MemberName" />
+        <property name="Spacing">6</property>
+        <child>
+          <widget class="Gtk.Table" id="table1">
+            <property name="MemberName" />
+            <property name="NRows">8</property>
+            <property name="NColumns">2</property>
+            <property name="RowSpacing">6</property>
+            <property name="ColumnSpacing">6</property>
+            <child>
+              <placeholder />
+            </child>
+            <child>
+              <placeholder />
+            </child>
+            <child>
+              <widget class="Gtk.CheckButton" id="checkbuttonkeepcommontags">
+                <property name="MemberName" />
+                <property name="Label" translatable="yes" />
+                <property name="DrawIndicator">True</property>
+                <property name="HasLabel">True</property>
+                <property name="UseUnderline">True</property>
+              </widget>
+              <packing>
+                <property name="TopAttach">7</property>
+                <property name="BottomAttach">8</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.CheckButton" id="checkbuttonkeepplayertags">
+                <property name="MemberName" />
+                <property name="Label" translatable="yes" />
+                <property name="DrawIndicator">True</property>
+                <property name="HasLabel">True</property>
+                <property name="UseUnderline">True</property>
+                <property name="FocusOnClick">False</property>
+              </widget>
+              <packing>
+                <property name="TopAttach">6</property>
+                <property name="BottomAttach">7</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="comboboxaction">
+                <property name="MemberName" />
+                <property name="IsTextCombo">True</property>
+                <property name="Items" translatable="yes">Toggle
+Replicate</property>
+                <property name="FocusOnClick">False</property>
+              </widget>
+              <packing>
+                <property name="TopAttach">4</property>
+                <property name="BottomAttach">5</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.ComboBox" id="comboboxteamaction">
+                <property name="MemberName" />
+                <property name="IsTextCombo">True</property>
+                <property name="Items" translatable="yes">Clear
+Keep
+Invert</property>
+              </widget>
+              <packing>
+                <property name="TopAttach">5</property>
+                <property name="BottomAttach">6</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.Entry" id="entryfrom">
+                <property name="MemberName" />
+                <property name="IsEditable">False</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.Entry" id="entryfromtags">
+                <property name="MemberName" />
+                <property name="IsEditable">False</property>
+                <property name="InvisibleChar">●</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">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="entryto">
+                <property name="MemberName" />
+                <property name="IsEditable">False</property>
+                <property name="InvisibleChar">●</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.Entry" id="entrytotags">
+                <property name="MemberName" />
+                <property name="IsEditable">False</property>
+                <property name="InvisibleChar">●</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="labelaction">
+                <property name="MemberName" />
+                <property name="Xalign">1</property>
+                <property name="LabelProp" translatable="yes">Action</property>
+              </widget>
+              <packing>
+                <property name="TopAttach">4</property>
+                <property name="BottomAttach">5</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="labelfrom">
+                <property name="MemberName" />
+                <property name="Xalign">1</property>
+                <property name="LabelProp" translatable="yes">From</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="labelkeepcommontags">
+                <property name="MemberName" />
+                <property name="Xalign">1</property>
+                <property name="LabelProp" translatable="yes">Keep common tags</property>
+              </widget>
+              <packing>
+                <property name="TopAttach">7</property>
+                <property name="BottomAttach">8</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="labelkeepplayertags">
+                <property name="MemberName" />
+                <property name="Xalign">1</property>
+                <property name="LabelProp" translatable="yes">Keep player tags</property>
+              </widget>
+              <packing>
+                <property name="TopAttach">6</property>
+                <property name="BottomAttach">7</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="labelteamaction">
+                <property name="MemberName" />
+                <property name="Xalign">1</property>
+                <property name="LabelProp" translatable="yes">Team action</property>
+              </widget>
+              <packing>
+                <property name="TopAttach">5</property>
+                <property name="BottomAttach">6</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="labelto">
+                <property name="MemberName" />
+                <property name="Xalign">1</property>
+                <property name="LabelProp" translatable="yes">To</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>
+          </widget>
+          <packing>
+            <property name="Position">0</property>
+            <property name="AutoSize">True</property>
+            <property name="Expand">False</property>
+            <property name="Fill">False</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
 </stetic-interface>
\ No newline at end of file



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]