[longomatch] Add multisepection support to the teams templates editor



commit 3f518b3451a1435f7a9b1bc669d7b7cf4c06ec63
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date:   Fri Sep 16 00:13:40 2011 +0200

    Add multisepection support to the teams templates editor

 LongoMatch/Gui/Component/TemplatesEditorBase.cs    |   17 ++++++++++----
 .../Gui/TreeView/PlayerPropertiesTreeView.cs       |   22 ++++++++++++++++++-
 LongoMatch/Handlers/Handlers.cs                    |    3 ++
 LongoMatch/gtk-gui/objects.xml                     |    2 +-
 4 files changed, 36 insertions(+), 8 deletions(-)
---
diff --git a/LongoMatch/Gui/Component/TemplatesEditorBase.cs b/LongoMatch/Gui/Component/TemplatesEditorBase.cs
index 840dbba..4af7e5b 100644
--- a/LongoMatch/Gui/Component/TemplatesEditorBase.cs
+++ b/LongoMatch/Gui/Component/TemplatesEditorBase.cs
@@ -289,7 +289,7 @@ namespace LongoMatch.Gui.Component
 		public TeamTemplateEditorWidget () {
 			treeview = new PlayerPropertiesTreeView(); 
 			treeview.PlayerClicked += this.OnPlayerClicked;
-			treeview.PlayerSelected += this.OnPlayersSelected;
+			treeview.PlayersSelected += this.OnPlayersSelected;
 			AddTreeView(treeview);
 			AddTeamNamesWidget();
 			
@@ -333,17 +333,24 @@ namespace LongoMatch.Gui.Component
 			Edited = true;
 		}
 
-		protected virtual void OnPlayerClicked(LongoMatch.Store.Player player)
+		protected virtual void OnPlayerClicked(Player player)
 		{
 			selected = new List<Player>();
 			selected.Add(player);
 			EditSelected();
 		}
 
-		protected virtual void OnPlayersSelected(LongoMatch.Store.Player player)
+		protected virtual void OnPlayersSelected(List<Player> players)
 		{
-			selected = new List<Player>();
-			selected.Add(player);
+			selected = players;
+			
+			if(selected.Count == 0) {
+				ButtonsSensitive = false;
+			} else if(selected.Count == 1) {
+				ButtonsSensitive = true;
+			} else {
+				MultipleSelection();
+			}
 		}
 		
 		protected override void RemoveSelected (){
diff --git a/LongoMatch/Gui/TreeView/PlayerPropertiesTreeView.cs b/LongoMatch/Gui/TreeView/PlayerPropertiesTreeView.cs
index a52b001..4f0efc3 100644
--- a/LongoMatch/Gui/TreeView/PlayerPropertiesTreeView.cs
+++ b/LongoMatch/Gui/TreeView/PlayerPropertiesTreeView.cs
@@ -19,6 +19,7 @@
 //
 
 using System;
+using System.Collections.Generic;
 using Gdk;
 using Gtk;
 using Mono.Unix;
@@ -28,18 +29,19 @@ using LongoMatch.Store;
 namespace LongoMatch.Gui.Component
 {
 
-	public delegate void PlayerPropertiesHandler(Player player);
 
 	[System.ComponentModel.Category("LongoMatch")]
 	[System.ComponentModel.ToolboxItem(true)]
 	public class PlayerPropertiesTreeView : Gtk.TreeView
 	{
 		public event PlayerPropertiesHandler PlayerClicked;
-		public event PlayerPropertiesHandler PlayerSelected;
+		public event PlayersPropertiesHandler PlayersSelected;
 
 		public PlayerPropertiesTreeView() {
 
 			RowActivated += OnTreeviewRowActivated;
+			Selection.Changed += OnSelectionChanged;
+			Selection.Mode =  SelectionMode.Multiple;
 
 			Gtk.TreeViewColumn photoColumn = new Gtk.TreeViewColumn();
 			photoColumn.Title = Catalog.GetString("Photo");
@@ -170,6 +172,22 @@ namespace LongoMatch.Gui.Component
 			(cell as Gtk.CellRendererText).Text = player.Birthday.ToShortDateString();
 		}
 
+		protected virtual void OnSelectionChanged(object o, System.EventArgs e) {
+			TreeIter iter;
+			List<Player> list;
+			TreePath[] pathArray;
+
+			list = new List<Player>();
+			pathArray = Selection.GetSelectedRows();
+
+			for(int i=0; i< pathArray.Length; i++) {
+				Model.GetIterFromString(out iter, pathArray[i].ToString());
+				list.Add((Player) Model.GetValue(iter, 0));
+			}
+			if(PlayersSelected != null)
+				PlayersSelected(list);
+		}
+
 		protected virtual void OnTreeviewRowActivated(object o, Gtk.RowActivatedArgs args)
 		{
 			Gtk.TreeIter iter;
diff --git a/LongoMatch/Handlers/Handlers.cs b/LongoMatch/Handlers/Handlers.cs
index 91904ce..ad9c565 100644
--- a/LongoMatch/Handlers/Handlers.cs
+++ b/LongoMatch/Handlers/Handlers.cs
@@ -89,5 +89,8 @@ namespace LongoMatch.Handlers
 	public delegate void SubCategoryHandler(ISubCategory subcat);
 	public delegate void SubCategoriesHandler(List<ISubCategory> subcat);
 
+	public delegate void PlayerPropertiesHandler(Player player);
+	public delegate void PlayersPropertiesHandler(List<Player> players);
+	
 	public delegate void ProjectsSelectedHandler(List<ProjectDescription> projects);
 }
diff --git a/LongoMatch/gtk-gui/objects.xml b/LongoMatch/gtk-gui/objects.xml
index 07b38c8..2f164cb 100644
--- a/LongoMatch/gtk-gui/objects.xml
+++ b/LongoMatch/gtk-gui/objects.xml
@@ -20,7 +20,7 @@
     <signals>
       <itemgroup label="PlayerPropertiesTreeView Signals">
         <signal name="PlayerClicked" />
-        <signal name="PlayerSelected" />
+        <signal name="PlayersSelected" />
       </itemgroup>
     </signals>
   </object>



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