[longomatch/newui: 64/157] Customize notebook and support detaching tabs



commit 1968ac1687d68ecc2c08cfba36b7a9f63a1cb5f6
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date:   Fri Aug 22 17:12:43 2014 +0200

    Customize notebook and support detaching tabs

 LongoMatch.Core/StyleConf.cs                       |    3 +-
 LongoMatch.GUI/Gui/Component/CodingWidget.cs       |  139 +++++++++++++++-----
 LongoMatch.GUI/Gui/Component/DashboardWidget.cs    |    6 +
 .../LongoMatch.Gui.Component.CodingWidget.cs       |  119 ++++++++---------
 LongoMatch.GUI/gtk-gui/gui.stetic                  |   68 ++++-------
 .../actions/longomatch-tab-active-dashboard.svg    |   10 ++
 .../actions/longomatch-tab-active-position.svg     |   15 ++
 .../actions/longomatch-tab-active-timeline.svg     |   24 ++++
 .../scalable/actions/longomatch-tab-dashboard.svg  |   10 ++
 .../scalable/actions/longomatch-tab-position.svg   |   15 ++
 .../scalable/actions/longomatch-tab-timeline.svg   |   24 ++++
 data/theme/gtk-2.0/gtkrc                           |    1 -
 12 files changed, 290 insertions(+), 144 deletions(-)
---
diff --git a/LongoMatch.Core/StyleConf.cs b/LongoMatch.Core/StyleConf.cs
index d1e3cb8..4f2d4d2 100644
--- a/LongoMatch.Core/StyleConf.cs
+++ b/LongoMatch.Core/StyleConf.cs
@@ -70,7 +70,8 @@ namespace LongoMatch.Common
                public const int PlayerArrowOffset = 14; 
                public const int PlayerArrowSize = 20; 
 
-               
+               public static int NotebookTabIconSize = 18;
+
                public int BenchLineWidth = 2;
                public int TeamTaggerBenchBorder = 10;
                
diff --git a/LongoMatch.GUI/Gui/Component/CodingWidget.cs b/LongoMatch.GUI/Gui/Component/CodingWidget.cs
index 4d29fba..dbd443d 100644
--- a/LongoMatch.GUI/Gui/Component/CodingWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/CodingWidget.cs
@@ -24,6 +24,7 @@ using LongoMatch.Common;
 using LongoMatch.Drawing.Widgets;
 using LongoMatch.Drawing.Cairo;
 using LongoMatch.Gui.Helpers;
+using Mono.Unix;
 
 namespace LongoMatch.Gui.Component
 {
@@ -34,19 +35,28 @@ namespace LongoMatch.Gui.Component
                ProjectType projectType;
                List<Player> selectedPlayers;
                Play loadedPlay;
-               
+               List<Window> activeWindows;
+               int currentPage;
+               Gdk.Pixbuf timelineIco, timelineActiveIco;
+               Gdk.Pixbuf posIco, posAtiveIco;
+               Gdk.Pixbuf dashboardIco, dashboardActiveIco;
+
                public CodingWidget ()
                {
                        this.Build ();
                        
-                       notebook.ShowTabs = false;
+                       LoadIcons ();
+                       
                        notebook.ShowBorder = false;
+                       notebook.Group = this.Handle;
+                       notebook.SwitchPage += HandleSwitchPage;
+                       Notebook.WindowCreationHook = CreateNewWindow;
+                       activeWindows = new List<Window> ();
+                       SetTabProps (dashboardhpaned, false);
+                       SetTabProps (timeline, false);
+                       SetTabProps (playspositionviewer1, false);
+                       notebook.Page = currentPage = 0;
 
-                       autoTaggingMode.Activated += HandleViewToggled;
-                       timelineMode.Activated += HandleViewToggled;
-                       positionMode.Activated += HandleViewToggled;
-                       autoTaggingMode.Active = true;
-                       
                        teamtagger = new TeamTagger (new WidgetWrapper (teamsdrawingarea));
                        teamtagger.SelectionMode = MultiSelectionMode.Multiple;
                        teamtagger.PlayersSelectionChangedEvent += HandlePlayersSelectionChangedEvent;
@@ -60,12 +70,15 @@ namespace LongoMatch.Gui.Component
                        Config.EventsBroker.PlaySelected += HandlePlaySelected;
                        LongoMatch.Gui.Helpers.Misc.DisableFocus (vbox);
                        
-                       //buttonswidget.NewTagEvent += HandleNewTagEvent;
                        buttonswidget.Mode = TagMode.Free;
+                       buttonswidget.FitMode = FitMode.Fit;
                }
 
                protected override void OnDestroyed ()
                {
+                       foreach (Window w in activeWindows) {
+                               w.Destroy ();
+                       }
                        Config.EventsBroker.Tick -= HandleTick;
                        Config.EventsBroker.PlaySelected -= HandlePlaySelected;
                        buttonswidget.Destroy ();
@@ -74,7 +87,8 @@ namespace LongoMatch.Gui.Component
                        base.OnDestroyed ();
                }
 
-               public void SetProject (Project project, ProjectType projectType, PlaysFilter filter) {
+               public void SetProject (Project project, ProjectType projectType, PlaysFilter filter)
+               {
                        this.projectType = projectType;
                        autoTaggingMode.Active = true;
                        buttonswidget.Visible = true;
@@ -91,39 +105,105 @@ namespace LongoMatch.Gui.Component
                        }
                        playspositionviewer1.LoadProject (project);
                }
-               
-               public void AddPlay(Play play) {
+
+               public void AddPlay (Play play)
+               {
                        if (projectType == ProjectType.FileProject) {
-                               timeline.AddPlay(play);
+                               timeline.AddPlay (play);
                        }
                        playspositionviewer1.AddPlay (play);
                }
-               
-               public void DeletePlays (List<Play> plays) {
+
+               public void DeletePlays (List<Play> plays)
+               {
                        if (projectType == ProjectType.FileProject) {
-                               timeline.RemovePlays(plays);
+                               timeline.RemovePlays (plays);
                        }
                        playspositionviewer1.RemovePlays (plays);
                }
 
-               public void UpdateCategories () {
+               public void UpdateCategories ()
+               {
                        buttonswidget.Refresh ();
                }
-               
-               void HandleViewToggled (object sender, EventArgs e)
+
+               public void LoadIcons ()
+               {
+                       int s = StyleConf.NotebookTabIconSize;
+                       IconLookupFlags f = IconLookupFlags.ForceSvg;
+ 
+                       timelineIco = IconTheme.Default.LoadIcon ("longomatch-tab-timeline", s, f);
+                       timelineActiveIco = IconTheme.Default.LoadIcon ("longomatch-tab-active-timeline", s, 
f);
+                       dashboardIco = IconTheme.Default.LoadIcon ("longomatch-tab-dashboard", s, f);
+                       dashboardActiveIco = IconTheme.Default.LoadIcon ("longomatch-tab-active-dashboard", 
s, f);
+                       posIco = IconTheme.Default.LoadIcon ("longomatch-tab-position", s, f);
+                       posAtiveIco = IconTheme.Default.LoadIcon ("longomatch-tab-active-position", s, f);
+               }
+
+               void SetTabProps (Widget widget, bool active)
                {
-                       if (!(sender as RadioAction).Active) {
+                       Gdk.Pixbuf icon;
+                       Gtk.Image img;
+
+                       img = notebook.GetTabLabel (widget) as Gtk.Image;
+                       if (img == null) {
+                               img = new Gtk.Image ();
+                               notebook.SetTabLabel (widget, img);
+                       }
+
+                       if (widget == timeline) {
+                               icon = active ? timelineActiveIco : timelineIco;
+                       } else if (widget == dashboardhpaned) {
+                               icon = active ? dashboardActiveIco : dashboardIco;
+                       } else if (widget == playspositionviewer1) {
+                               icon = active ? posAtiveIco : posIco;
+                       } else {
                                return;
                        }
-                       if (autoTaggingMode.Active) {
-                               notebook.Page = 0;
-                       } else if (timelineMode.Active) {
-                               notebook.Page = 1;
-                       } else if (positionMode.Active) {
-                               notebook.CurrentPage = 2;
+                       img.Pixbuf = icon;
+                       notebook.SetTabDetachable (widget, true);
+               }
+
+               Notebook CreateNewWindow (Notebook source, Widget page, int x, int y)
+               {
+                       Window window;
+                       Notebook notebook;
+
+                       window = new Window (WindowType.Toplevel);
+                       if (page == timeline) {
+                               window.Title = Catalog.GetString ("Timeline");
+                       } else if (page == dashboardhpaned) {
+                               window.Title = Catalog.GetString ("Analysis dashboard");
+                       } else if (page == playspositionviewer1) {
+                               window.Title = Catalog.GetString ("Zonal tags viewer");
                        }
+                       window.Icon = Stetic.IconLoader.LoadIcon (this, "longomatch", IconSize.Menu);
+                       notebook = new Notebook ();
+                       notebook.ShowTabs = false;
+                       //notebook.Group = source.Group;
+                       window.Add (notebook);
+                       window.SetDefaultSize (300, 300);
+                       window.Move (x, y);
+                       window.ShowAll ();
+                       activeWindows.Add (window);
+                       window.DeleteEvent += (o, args) => {
+                               Widget pa = notebook.CurrentPageWidget;
+                               activeWindows.Remove (window);
+                               notebook.Remove (pa);
+                               source.AppendPage (pa, null);
+                               SetTabProps (pa, source.NPages == 0);
+                               notebook.Destroy ();
+                       };
+                       return notebook;
                }
-               
+
+               void HandleSwitchPage (object o, SwitchPageArgs args)
+               {
+                       SetTabProps (notebook.GetNthPage (currentPage), false);
+                       SetTabProps (notebook.GetNthPage ((int)args.PageNum), true);
+                       currentPage = (int)args.PageNum;
+               }
+
                void HandlePlaySelected (Play play)
                {
                        loadedPlay = play;
@@ -135,12 +215,6 @@ namespace LongoMatch.Gui.Component
                        timeline.CurrentTime = currentTime;
                }
 
-               void HandleNewTagEvent (Category category, List<Player> players)
-               {
-                       Config.EventsBroker.EmitNewTag (category, selectedPlayers);
-                       teamtagger.ClearSelection ();
-               }
-
                void HandlePlayersSelectionChangedEvent (List<Player> players)
                {
                        if (loadedPlay != null) {
@@ -151,6 +225,5 @@ namespace LongoMatch.Gui.Component
                        }
                }
        }
-
 }
 
diff --git a/LongoMatch.GUI/Gui/Component/DashboardWidget.cs b/LongoMatch.GUI/Gui/Component/DashboardWidget.cs
index 626c822..23a264e 100644
--- a/LongoMatch.GUI/Gui/Component/DashboardWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/DashboardWidget.cs
@@ -79,6 +79,12 @@ namespace LongoMatch.Gui.Component
                        base.OnDestroyed ();
                }
 
+               public FitMode FitMode {
+                       set {
+                               tagger.FitMode = value;
+                       }
+               }
+
                public bool Edited {
                        get {
                                return edited || tagger.Edited || tagproperties.Edited;
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs
index 9536ba6..367ad41 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs
@@ -5,22 +5,22 @@ namespace LongoMatch.Gui.Component
        public partial class CodingWidget
        {
                private global::Gtk.UIManager UIManager;
+               private global::Gtk.RadioAction positionMode;
                private global::Gtk.RadioAction timelineMode;
                private global::Gtk.RadioAction autoTaggingMode;
                private global::Gtk.Action zoomFitAction;
                private global::Gtk.RadioAction convertAction;
-               private global::Gtk.RadioAction positionMode;
                private global::Gtk.VBox vbox;
-               private global::Gtk.HBox hbox1;
-               private global::Gtk.Toolbar codingtoolbar;
                private global::Gtk.Notebook notebook;
-               private global::Gtk.HPaned hpaned1;
+               private global::Gtk.HPaned dashboardhpaned;
                private global::Gtk.DrawingArea teamsdrawingarea;
                private global::Gtk.HBox hbox5;
                private global::LongoMatch.Gui.Component.DashboardWidget buttonswidget;
+               private global::Gtk.Label label2;
                private global::LongoMatch.Gui.Component.Timeline timeline;
+               private global::Gtk.Label label3;
                private global::LongoMatch.Gui.Component.PlaysPositionViewer playspositionviewer1;
-               private global::Gtk.Label label19;
+               private global::Gtk.Label label5;
 
                protected virtual void Build ()
                {
@@ -28,23 +28,23 @@ namespace LongoMatch.Gui.Component
                        // Widget LongoMatch.Gui.Component.CodingWidget
                        Stetic.BinContainer w1 = global::Stetic.BinContainer.Attach (this);
                        this.UIManager = new global::Gtk.UIManager ();
-                       global::Gtk.ActionGroup w2 = new global::Gtk.ActionGroup ("Default");
+                       global::Gtk.ActionGroup w2 = new global::Gtk.ActionGroup ("Timeline");
+                       this.positionMode = new global::Gtk.RadioAction ("positionMode", null, null, 
"gtk-justify-fill", 0);
+                       this.positionMode.Group = new global::GLib.SList (global::System.IntPtr.Zero);
+                       w2.Add (this.positionMode, null);
+                       this.UIManager.InsertActionGroup (w2, 0);
+                       global::Gtk.ActionGroup w3 = new global::Gtk.ActionGroup ("Default");
                        this.timelineMode = new global::Gtk.RadioAction ("timelineMode", null, 
global::Mono.Unix.Catalog.GetString ("Timeline view"), "gtk-justify-fill", 0);
-                       this.timelineMode.Group = new global::GLib.SList (global::System.IntPtr.Zero);
-                       w2.Add (this.timelineMode, null);
+                       this.timelineMode.Group = this.positionMode.Group;
+                       w3.Add (this.timelineMode, null);
                        this.autoTaggingMode = new global::Gtk.RadioAction ("autoTaggingMode", null, 
global::Mono.Unix.Catalog.GetString ("Automatic tagging view"), "gtk-select-color", 0);
                        this.autoTaggingMode.Group = this.timelineMode.Group;
-                       w2.Add (this.autoTaggingMode, null);
+                       w3.Add (this.autoTaggingMode, null);
                        this.zoomFitAction = new global::Gtk.Action ("zoomFitAction", null, null, 
"gtk-zoom-fit");
-                       w2.Add (this.zoomFitAction, null);
+                       w3.Add (this.zoomFitAction, null);
                        this.convertAction = new global::Gtk.RadioAction ("convertAction", null, null, 
"gtk-convert", 0);
-                       this.convertAction.Group = this.autoTaggingMode.Group;
-                       w2.Add (this.convertAction, null);
-                       this.UIManager.InsertActionGroup (w2, 0);
-                       global::Gtk.ActionGroup w3 = new global::Gtk.ActionGroup ("Timeline");
-                       this.positionMode = new global::Gtk.RadioAction ("positionMode", null, null, 
"gtk-justify-fill", 0);
-                       this.positionMode.Group = this.autoTaggingMode.Group;
-                       w3.Add (this.positionMode, null);
+                       this.convertAction.Group = this.timelineMode.Group;
+                       w3.Add (this.convertAction, null);
                        this.UIManager.InsertActionGroup (w3, 1);
                        this.Name = "LongoMatch.Gui.Component.CodingWidget";
                        // Container child LongoMatch.Gui.Component.CodingWidget.Gtk.Container+ContainerChild
@@ -52,42 +52,24 @@ namespace LongoMatch.Gui.Component
                        this.vbox.Name = "vbox";
                        this.vbox.Spacing = 6;
                        // Container child vbox.Gtk.Box+BoxChild
-                       this.hbox1 = new global::Gtk.HBox ();
-                       this.hbox1.Name = "hbox1";
-                       this.hbox1.Spacing = 6;
-                       // Container child hbox1.Gtk.Box+BoxChild
-                       this.UIManager.AddUiFromString ("<ui><toolbar name='codingtoolbar'><toolitem 
name='autoTaggingMode' action='autoTaggingMode'/><toolitem name='timelineMode' 
action='timelineMode'/><toolitem name='positionMode' action='positionMode'/></toolbar></ui>");
-                       this.codingtoolbar = ((global::Gtk.Toolbar)(this.UIManager.GetWidget 
("/codingtoolbar")));
-                       this.codingtoolbar.Name = "codingtoolbar";
-                       this.codingtoolbar.ShowArrow = false;
-                       this.hbox1.Add (this.codingtoolbar);
-                       global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.hbox1 
[this.codingtoolbar]));
-                       w4.Position = 0;
-                       w4.Expand = false;
-                       w4.Fill = false;
-                       this.vbox.Add (this.hbox1);
-                       global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox [this.hbox1]));
-                       w5.Position = 0;
-                       w5.Expand = false;
-                       w5.Fill = false;
-                       // Container child vbox.Gtk.Box+BoxChild
                        this.notebook = new global::Gtk.Notebook ();
                        this.notebook.CanFocus = true;
                        this.notebook.Name = "notebook";
-                       this.notebook.CurrentPage = 1;
+                       this.notebook.CurrentPage = 0;
                        this.notebook.TabPos = ((global::Gtk.PositionType)(0));
+                       this.notebook.ShowBorder = false;
                        // Container child notebook.Gtk.Notebook+NotebookChild
-                       this.hpaned1 = new global::Gtk.HPaned ();
-                       this.hpaned1.CanFocus = true;
-                       this.hpaned1.Name = "hpaned1";
-                       this.hpaned1.Position = 276;
-                       // Container child hpaned1.Gtk.Paned+PanedChild
+                       this.dashboardhpaned = new global::Gtk.HPaned ();
+                       this.dashboardhpaned.CanFocus = true;
+                       this.dashboardhpaned.Name = "dashboardhpaned";
+                       this.dashboardhpaned.Position = 276;
+                       // Container child dashboardhpaned.Gtk.Paned+PanedChild
                        this.teamsdrawingarea = new global::Gtk.DrawingArea ();
                        this.teamsdrawingarea.Name = "teamsdrawingarea";
-                       this.hpaned1.Add (this.teamsdrawingarea);
-                       global::Gtk.Paned.PanedChild w6 = ((global::Gtk.Paned.PanedChild)(this.hpaned1 
[this.teamsdrawingarea]));
-                       w6.Resize = false;
-                       // Container child hpaned1.Gtk.Paned+PanedChild
+                       this.dashboardhpaned.Add (this.teamsdrawingarea);
+                       global::Gtk.Paned.PanedChild w4 = 
((global::Gtk.Paned.PanedChild)(this.dashboardhpaned [this.teamsdrawingarea]));
+                       w4.Resize = false;
+                       // Container child dashboardhpaned.Gtk.Paned+PanedChild
                        this.hbox5 = new global::Gtk.HBox ();
                        this.hbox5.Name = "hbox5";
                        this.hbox5.Spacing = 6;
@@ -97,36 +79,45 @@ namespace LongoMatch.Gui.Component
                        this.buttonswidget.Name = "buttonswidget";
                        this.buttonswidget.Edited = false;
                        this.hbox5.Add (this.buttonswidget);
-                       global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.hbox5 
[this.buttonswidget]));
-                       w7.Position = 0;
-                       this.hpaned1.Add (this.hbox5);
-                       this.notebook.Add (this.hpaned1);
+                       global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hbox5 
[this.buttonswidget]));
+                       w5.Position = 0;
+                       this.dashboardhpaned.Add (this.hbox5);
+                       this.notebook.Add (this.dashboardhpaned);
+                       // Notebook tab
+                       this.label2 = new global::Gtk.Label ();
+                       this.label2.Name = "label2";
+                       this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("page1");
+                       this.notebook.SetTabLabel (this.dashboardhpaned, this.label2);
+                       this.label2.ShowAll ();
                        // Container child notebook.Gtk.Notebook+NotebookChild
                        this.timeline = new global::LongoMatch.Gui.Component.Timeline ();
                        this.timeline.Events = ((global::Gdk.EventMask)(256));
                        this.timeline.Name = "timeline";
                        this.notebook.Add (this.timeline);
-                       global::Gtk.Notebook.NotebookChild w10 = 
((global::Gtk.Notebook.NotebookChild)(this.notebook [this.timeline]));
-                       w10.Position = 1;
+                       global::Gtk.Notebook.NotebookChild w8 = 
((global::Gtk.Notebook.NotebookChild)(this.notebook [this.timeline]));
+                       w8.Position = 1;
+                       // Notebook tab
+                       this.label3 = new global::Gtk.Label ();
+                       this.label3.Name = "label3";
+                       this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("page2");
+                       this.notebook.SetTabLabel (this.timeline, this.label3);
+                       this.label3.ShowAll ();
                        // Container child notebook.Gtk.Notebook+NotebookChild
                        this.playspositionviewer1 = new global::LongoMatch.Gui.Component.PlaysPositionViewer 
();
                        this.playspositionviewer1.Events = ((global::Gdk.EventMask)(256));
                        this.playspositionviewer1.Name = "playspositionviewer1";
                        this.notebook.Add (this.playspositionviewer1);
-                       global::Gtk.Notebook.NotebookChild w11 = 
((global::Gtk.Notebook.NotebookChild)(this.notebook [this.playspositionviewer1]));
-                       w11.Position = 2;
+                       global::Gtk.Notebook.NotebookChild w9 = 
((global::Gtk.Notebook.NotebookChild)(this.notebook [this.playspositionviewer1]));
+                       w9.Position = 2;
                        // Notebook tab
-                       global::Gtk.Label w12 = new global::Gtk.Label ();
-                       w12.Visible = true;
-                       this.notebook.Add (w12);
-                       this.label19 = new global::Gtk.Label ();
-                       this.label19.Name = "label19";
-                       this.label19.LabelProp = global::Mono.Unix.Catalog.GetString ("page3");
-                       this.notebook.SetTabLabel (w12, this.label19);
-                       this.label19.ShowAll ();
+                       this.label5 = new global::Gtk.Label ();
+                       this.label5.Name = "label5";
+                       this.label5.LabelProp = global::Mono.Unix.Catalog.GetString ("page3");
+                       this.notebook.SetTabLabel (this.playspositionviewer1, this.label5);
+                       this.label5.ShowAll ();
                        this.vbox.Add (this.notebook);
-                       global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.vbox 
[this.notebook]));
-                       w13.Position = 1;
+                       global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.vbox 
[this.notebook]));
+                       w10.Position = 0;
                        this.Add (this.vbox);
                        if ((this.Child != null)) {
                                this.Child.ShowAll ();
diff --git a/LongoMatch.GUI/gtk-gui/gui.stetic b/LongoMatch.GUI/gtk-gui/gui.stetic
index cc6f4b6..637eaf4 100644
--- a/LongoMatch.GUI/gtk-gui/gui.stetic
+++ b/LongoMatch.GUI/gtk-gui/gui.stetic
@@ -10003,48 +10003,14 @@ You can continue with the current capture, cancel it or save your project.
         <property name="MemberName" />
         <property name="Spacing">6</property>
         <child>
-          <widget class="Gtk.HBox" id="hbox1">
-            <property name="MemberName" />
-            <property name="Spacing">6</property>
-            <child>
-              <widget class="Gtk.Toolbar" id="codingtoolbar">
-                <property name="MemberName" />
-                <property name="ShowArrow">False</property>
-                <node name="codingtoolbar" type="Toolbar">
-                  <node type="Toolitem" action="autoTaggingMode" />
-                  <node type="Toolitem" action="timelineMode" />
-                  <node type="Toolitem" action="positionMode" />
-                </node>
-              </widget>
-              <packing>
-                <property name="Position">0</property>
-                <property name="AutoSize">False</property>
-                <property name="Expand">False</property>
-                <property name="Fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <placeholder />
-            </child>
-            <child>
-              <placeholder />
-            </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.Notebook" id="notebook">
             <property name="MemberName" />
             <property name="CanFocus">True</property>
-            <property name="CurrentPage">1</property>
+            <property name="CurrentPage">0</property>
             <property name="TabPos">Left</property>
+            <property name="ShowBorder">False</property>
             <child>
-              <widget class="Gtk.HPaned" id="hpaned1">
+              <widget class="Gtk.HPaned" id="dashboardhpaned">
                 <property name="MemberName" />
                 <property name="CanFocus">True</property>
                 <property name="Position">276</property>
@@ -10076,6 +10042,15 @@ You can continue with the current capture, cancel it or save your project.
               </widget>
             </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.Timeline" id="timeline">
                 <property name="MemberName" />
                 <property name="Events">ButtonPressMask</property>
@@ -10085,6 +10060,15 @@ You can continue with the current capture, cancel it or save your project.
               </packing>
             </child>
             <child>
+              <widget class="Gtk.Label" id="label3">
+                <property name="MemberName" />
+                <property name="LabelProp" translatable="yes">page2</property>
+              </widget>
+              <packing>
+                <property name="type">tab</property>
+              </packing>
+            </child>
+            <child>
               <widget class="LongoMatch.Gui.Component.PlaysPositionViewer" id="playspositionviewer1">
                 <property name="MemberName" />
                 <property name="Events">ButtonPressMask</property>
@@ -10094,13 +10078,7 @@ You can continue with the current capture, cancel it or save your project.
               </packing>
             </child>
             <child>
-              <placeholder />
-            </child>
-            <child>
-              <placeholder />
-            </child>
-            <child>
-              <widget class="Gtk.Label" id="label19">
+              <widget class="Gtk.Label" id="label5">
                 <property name="MemberName" />
                 <property name="LabelProp" translatable="yes">page3</property>
               </widget>
@@ -10110,7 +10088,7 @@ You can continue with the current capture, cancel it or save your project.
             </child>
           </widget>
           <packing>
-            <property name="Position">1</property>
+            <property name="Position">0</property>
             <property name="AutoSize">True</property>
           </packing>
         </child>
diff --git a/data/icons/hicolor/scalable/actions/longomatch-tab-active-dashboard.svg 
b/data/icons/hicolor/scalable/actions/longomatch-tab-active-dashboard.svg
new file mode 100644
index 0000000..2a5e3d2
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-tab-active-dashboard.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; x="0px" y="0px"
+        width="18px" height="18px" viewBox="2 2 18 18" enable-background="new 2 2 18 18" 
xml:space="preserve">
+<path id="tag_2_" fill="#F6F6F6" 
d="M20,3.124C20,2.504,19.496,2,18.875,2l-7.313,0.006c-0.225,0-0.386,0.075-0.608,0.297
+       l-8.65,8.64c-0.404,0.403-0.404,1.057,0,1.46l7.391,7.294c0.405,0.403,1.06,0.403,1.464,0l8.578-8.622
+       C19.959,10.854,20,10.624,20,10.428V3.124z 
M16.068,7.626c-0.932,0-1.688-0.757-1.688-1.688c0-0.932,0.757-1.688,1.688-1.688
+       c0.933,0,1.69,0.756,1.69,1.688C17.759,6.869,17.001,7.626,16.068,7.626z"/>
+</svg>
diff --git a/data/icons/hicolor/scalable/actions/longomatch-tab-active-position.svg 
b/data/icons/hicolor/scalable/actions/longomatch-tab-active-position.svg
new file mode 100644
index 0000000..ad13334
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-tab-active-position.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; x="0px" y="0px"
+        width="18px" height="18px" viewBox="2 2 18 18" enable-background="new 2 2 18 18" 
xml:space="preserve">
+<g>
+       <path fill="#F6F6F6" d="M10.475,9.232c-0.895,0-1.62,0.727-1.62,1.619c0,0.894,0.726,1.622,1.62,1.622
+               c0.893,0,1.62-0.728,1.62-1.622C12.095,9.959,11.367,9.232,10.475,9.232z"/>
+       <path fill="#F6F6F6" 
d="M18.874,2l-7.312,0.007c-0.226,0-0.387,0.075-0.608,0.296l-8.65,8.64c-0.404,0.403-0.404,1.056,0,1.46
+               
l7.391,7.294c0.405,0.403,1.06,0.403,1.465,0l8.577-8.622C19.958,10.853,20,10.624,20,10.427V3.124C20,2.504,19.495,2,18.874,2z
+                
M14.418,13.688l-0.17,0.234l-3.45,4.869c-0.075,0.102-0.196,0.163-0.323,0.163c-0.128,0-0.248-0.062-0.324-0.163l-3.491-4.928
+               
L6.53,13.687c-0.6-0.834-0.917-1.813-0.917-2.835c0-2.68,2.182-4.861,4.861-4.861c2.681,0,4.861,2.181,4.861,4.861
+               C15.336,11.873,15.018,12.853,14.418,13.688z"/>
+</g>
+</svg>
diff --git a/data/icons/hicolor/scalable/actions/longomatch-tab-active-timeline.svg 
b/data/icons/hicolor/scalable/actions/longomatch-tab-active-timeline.svg
new file mode 100644
index 0000000..7ade05c
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-tab-active-timeline.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; x="0px" y="0px"
+        width="18px" height="18px" viewBox="2 2 18 18" enable-background="new 2 2 18 18" 
xml:space="preserve">
+<g id="list">
+       <path fill="#F6F6F6" 
d="M19.438,3.125h-13.5c-0.311,0-0.562,0.251-0.562,0.562v1.126c0,0.31,0.251,0.562,0.562,0.562h13.5
+               C19.748,5.374,20,5.123,20,4.812V3.687C20,3.376,19.748,3.125,19.438,3.125z"/>
+       <path fill="#F6F6F6" 
d="M19.438,7.625h-13.5c-0.311,0-0.562,0.251-0.562,0.563v1.124c0,0.311,0.251,0.563,0.562,0.563h13.5
+               C19.748,9.876,20,9.624,20,9.312V8.188C20,7.876,19.748,7.625,19.438,7.625z"/>
+       <path fill="#F6F6F6" 
d="M19.438,12.125h-13.5c-0.311,0-0.562,0.251-0.562,0.562v1.125c0,0.311,0.251,0.563,0.562,0.563h13.5
+               c0.311,0,0.562-0.253,0.562-0.563v-1.125C20,12.376,19.748,12.125,19.438,12.125z"/>
+       <path fill="#F6F6F6" 
d="M19.438,16.625h-13.5c-0.311,0-0.562,0.252-0.562,0.562v1.126c0,0.311,0.251,0.562,0.562,0.562h13.5
+               c0.311,0,0.562-0.252,0.562-0.562v-1.126C20,16.877,19.748,16.625,19.438,16.625z"/>
+       <path fill="#F6F6F6" 
d="M3.688,3.125H2.562C2.251,3.125,2,3.376,2,3.687v1.126c0,0.31,0.251,0.562,0.562,0.562h1.125
+               c0.311,0,0.562-0.251,0.562-0.562V3.687C4.25,3.376,3.999,3.125,3.688,3.125z"/>
+       <path fill="#F6F6F6" 
d="M3.688,7.625H2.562C2.251,7.625,2,7.876,2,8.188v1.124c0,0.311,0.251,0.563,0.562,0.563h1.125
+               c0.311,0,0.562-0.252,0.562-0.563V8.188C4.25,7.876,3.999,7.625,3.688,7.625z"/>
+       <path fill="#F6F6F6" 
d="M3.688,12.125H2.562C2.251,12.125,2,12.376,2,12.687v1.125c0,0.311,0.251,0.563,0.562,0.563h1.125
+               c0.311,0,0.562-0.253,0.562-0.563v-1.125C4.25,12.376,3.999,12.125,3.688,12.125z"/>
+       <path fill="#F6F6F6" 
d="M3.688,16.625H2.562C2.251,16.625,2,16.877,2,17.187v1.126c0,0.311,0.251,0.562,0.562,0.562h1.125
+               c0.311,0,0.562-0.252,0.562-0.562v-1.126C4.25,16.877,3.999,16.625,3.688,16.625z"/>
+</g>
+</svg>
diff --git a/data/icons/hicolor/scalable/actions/longomatch-tab-dashboard.svg 
b/data/icons/hicolor/scalable/actions/longomatch-tab-dashboard.svg
new file mode 100644
index 0000000..29f1526
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-tab-dashboard.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; x="0px" y="0px"
+        width="18px" height="18px" viewBox="2 2 18 18" enable-background="new 2 2 18 18" 
xml:space="preserve">
+<path id="tag_2_" fill="#6A6A6A" 
d="M20,3.124C20,2.504,19.496,2,18.875,2l-7.313,0.006c-0.225,0-0.386,0.075-0.608,0.297
+       l-8.65,8.64c-0.404,0.403-0.404,1.057,0,1.46l7.391,7.294c0.405,0.403,1.06,0.403,1.464,0l8.578-8.622
+       C19.959,10.854,20,10.624,20,10.428V3.124z 
M16.068,7.626c-0.932,0-1.688-0.757-1.688-1.688c0-0.932,0.757-1.688,1.688-1.688
+       c0.933,0,1.69,0.756,1.69,1.688C17.759,6.869,17.001,7.626,16.068,7.626z"/>
+</svg>
diff --git a/data/icons/hicolor/scalable/actions/longomatch-tab-position.svg 
b/data/icons/hicolor/scalable/actions/longomatch-tab-position.svg
new file mode 100644
index 0000000..ce61a86
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-tab-position.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; x="0px" y="0px"
+        width="18px" height="18px" viewBox="2 2 18 18" enable-background="new 2 2 18 18" 
xml:space="preserve">
+<g>
+       <path fill="#6A6A6A" d="M10.475,9.232c-0.895,0-1.62,0.727-1.62,1.619c0,0.894,0.726,1.622,1.62,1.622
+               c0.893,0,1.62-0.728,1.62-1.622C12.095,9.959,11.367,9.232,10.475,9.232z"/>
+       <path fill="#6A6A6A" 
d="M18.874,2l-7.312,0.007c-0.226,0-0.387,0.075-0.608,0.296l-8.65,8.64c-0.404,0.403-0.404,1.056,0,1.46
+               
l7.391,7.294c0.405,0.403,1.06,0.403,1.465,0l8.577-8.622C19.958,10.853,20,10.624,20,10.427V3.124C20,2.504,19.495,2,18.874,2z
+                
M14.418,13.688l-0.17,0.234l-3.45,4.869c-0.075,0.102-0.196,0.163-0.323,0.163c-0.128,0-0.248-0.062-0.324-0.163l-3.491-4.928
+               
L6.53,13.687c-0.6-0.834-0.917-1.813-0.917-2.835c0-2.68,2.182-4.861,4.861-4.861c2.681,0,4.861,2.181,4.861,4.861
+               C15.336,11.873,15.018,12.853,14.418,13.688z"/>
+</g>
+</svg>
diff --git a/data/icons/hicolor/scalable/actions/longomatch-tab-timeline.svg 
b/data/icons/hicolor/scalable/actions/longomatch-tab-timeline.svg
new file mode 100644
index 0000000..010bcad
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-tab-timeline.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; x="0px" y="0px"
+        width="18px" height="18px" viewBox="2 2 18 18" enable-background="new 2 2 18 18" 
xml:space="preserve">
+<g id="list">
+       <path fill="#6A6A6A" 
d="M19.438,3.125h-13.5c-0.311,0-0.562,0.251-0.562,0.562v1.126c0,0.31,0.251,0.562,0.562,0.562h13.5
+               C19.748,5.374,20,5.123,20,4.812V3.687C20,3.376,19.748,3.125,19.438,3.125z"/>
+       <path fill="#6A6A6A" 
d="M19.438,7.625h-13.5c-0.311,0-0.562,0.251-0.562,0.563v1.124c0,0.311,0.251,0.563,0.562,0.563h13.5
+               C19.748,9.876,20,9.624,20,9.312V8.188C20,7.876,19.748,7.625,19.438,7.625z"/>
+       <path fill="#6A6A6A" 
d="M19.438,12.125h-13.5c-0.311,0-0.562,0.251-0.562,0.562v1.125c0,0.311,0.251,0.563,0.562,0.563h13.5
+               c0.311,0,0.562-0.253,0.562-0.563v-1.125C20,12.376,19.748,12.125,19.438,12.125z"/>
+       <path fill="#6A6A6A" 
d="M19.438,16.625h-13.5c-0.311,0-0.562,0.252-0.562,0.562v1.126c0,0.311,0.251,0.562,0.562,0.562h13.5
+               c0.311,0,0.562-0.252,0.562-0.562v-1.126C20,16.877,19.748,16.625,19.438,16.625z"/>
+       <path fill="#6A6A6A" 
d="M3.688,3.125H2.562C2.251,3.125,2,3.376,2,3.687v1.126c0,0.31,0.251,0.562,0.562,0.562h1.125
+               c0.311,0,0.562-0.251,0.562-0.562V3.687C4.25,3.376,3.999,3.125,3.688,3.125z"/>
+       <path fill="#6A6A6A" 
d="M3.688,7.625H2.562C2.251,7.625,2,7.876,2,8.188v1.124c0,0.311,0.251,0.563,0.562,0.563h1.125
+               c0.311,0,0.562-0.252,0.562-0.563V8.188C4.25,7.876,3.999,7.625,3.688,7.625z"/>
+       <path fill="#6A6A6A" 
d="M3.688,12.125H2.562C2.251,12.125,2,12.376,2,12.687v1.125c0,0.311,0.251,0.563,0.562,0.563h1.125
+               c0.311,0,0.562-0.253,0.562-0.563v-1.125C4.25,12.376,3.999,12.125,3.688,12.125z"/>
+       <path fill="#6A6A6A" 
d="M3.688,16.625H2.562C2.251,16.625,2,16.877,2,17.187v1.126c0,0.311,0.251,0.562,0.562,0.562h1.125
+               c0.311,0,0.562-0.252,0.562-0.562v-1.126C4.25,16.877,3.999,16.625,3.688,16.625z"/>
+</g>
+</svg>
diff --git a/data/theme/gtk-2.0/gtkrc b/data/theme/gtk-2.0/gtkrc
index 5330bcb..dbd6258 100644
--- a/data/theme/gtk-2.0/gtkrc
+++ b/data/theme/gtk-2.0/gtkrc
@@ -296,4 +296,3 @@ widget "*mediafilechooser*entry*" style "longomatch-filechooser-entry"
 widget "*datepicker*button*" style "longomatch-filechooser-button"
 widget "*datepicker*entry*" style "longomatch-filechooser-entry"
 widget "*mediafilechooser*button*" style "longomatch-filechooser-button"
-


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