Ver Fonte

add UnitNotebook

mikymod há 11 anos atrás
pai
commit
7fddf8106a

+ 2 - 6
tools/gui/UnitEditor/UnitEditor/MainWindow.cs

@@ -14,12 +14,8 @@ public partial class MainWindow: Gtk.Window
 		this.AddAccelGroup (mb.uim.AccelGroup);
 		box.PackStart(mb.instance, false, false, 0);
 
-		List<UnitEditor.Renderable> renderables = new List<UnitEditor.Renderable> ();
-		renderables.Add (new UnitEditor.Renderable ("a", "b", "c", true));
-
-		UnitEditor.RenderablesList renderables_list = new UnitEditor.RenderablesList (renderables);
-		box.PackStart(renderables_list, false, false, 0);
-
+		UnitEditor.UnitNotebook unb = new UnitEditor.UnitNotebook ("/home/mikymod/samples/doodles/blue_doodle.unit");
+		box.PackStart (unb.instance, false, false, 0);
 		Add (box);
 
 		ShowAll ();

+ 60 - 44
tools/gui/UnitEditor/UnitEditor/RenderablesList.cs

@@ -8,56 +8,74 @@ namespace UnitEditor
 	[System.ComponentModel.ToolboxItem (true)]
 	public partial class RenderablesList : Gtk.EventBox
 	{
-		private ListStore renderablesStore;
-		private List<Renderable> renderables;
+		private UnitFile m_unit_file;
 
-		public RenderablesList (List<Renderable> renderables)
+		private ListStore m_renderables_store;
+
+		private List<string> m_renderables_names;
+		private List<Renderable> m_renderables;
+
+		public RenderablesList (string file_name)
 		{
-			this.renderables = new List<Renderable> (renderables);
-			this.renderablesStore = new ListStore (typeof (string), typeof (string), typeof(string), typeof(bool));
+			m_unit_file = new UnitFile (file_name);
 
-			// Create our TreeView
-			TreeView tree = new TreeView ();
+			m_renderables_names = new List<string> (m_unit_file.renderables_names());
+			m_renderables = new List<Renderable> (m_unit_file.renderables());
 
-			// Add our tree to the window
+			Console.Write (m_renderables_names[0]);
+			m_renderables_store = new ListStore (typeof (string), typeof (string), typeof (string), typeof(string), typeof(bool));
+
+			TreeView tree = new TreeView ();
 			this.Add (tree);
 
-			// Create a column for the artist name
+			TreeViewColumn nameColumn = new TreeViewColumn ();
+			nameColumn.Title = "Name";
+			nameColumn.Alignment = 0.5f;
+
 			TreeViewColumn nodeColumn = new TreeViewColumn ();
 			nodeColumn.Title = "Node";
 			nodeColumn.Alignment = 0.5f;
 
-			// Create a column for the song title
 			TreeViewColumn typeColumn = new TreeViewColumn ();
 			typeColumn.Title = "Type";
 			typeColumn.Alignment = 0.5f;
 
-			// Create a column for the artist name
 			TreeViewColumn resourceColumn = new TreeViewColumn ();
 			resourceColumn.Title = "Resource";
 			resourceColumn.Alignment = 0.5f;
 
-			// Create a column for the song title
 			TreeViewColumn visibleColumn = new TreeViewColumn ();
 			visibleColumn.Title = "Visible";
 			visibleColumn.Alignment = 0.5f;
 
 			// Assign the model to the TreeView
-			tree.Model = renderablesStore;
+			tree.Model = m_renderables_store;
+
+			CellRendererText nameCell = new CellRendererText ();
+			nameCell.Editable = true;
+			nameCell.Edited += delegate (object o, EditedArgs e) { 
+				TreePath path = new TreePath (e.Path);
+				TreeIter iter;
+				m_renderables_store.GetIter (out iter, path);
+				int i = path.Indices[0];
+
+				string r = e.NewText;
+				m_renderables_names[i] = r;
+				m_renderables_store.SetValue (iter, 0, r);
+			};
+			nameColumn.PackStart (nameCell, true);
 
-			// Create the text cell that will display the node and add cell to the column
 			CellRendererText nodeCell = new CellRendererText ();
 			nodeCell.Editable = true;
 			nodeCell.Edited += delegate (object o, EditedArgs e) { 
 				TreePath path = new TreePath (e.Path);
 				TreeIter iter;
-				renderablesStore.GetIter (out iter, path);
+				m_renderables_store.GetIter (out iter, path);
 				int i = path.Indices[0];
 
-				Renderable r = renderables[i];
+				Renderable r = m_renderables[i];
 				r.node = e.NewText;
-				renderablesStore.SetValue (iter, 0, r.node);
-				Console.WriteLine("node:{0}, type:{1}, resource:{2}, visible:{3}", r.node, r.type, r.resource, r.visible);
+				m_renderables_store.SetValue (iter, 1, r.node);
 			};
 			nodeColumn.PackStart (nodeCell, true);
 
@@ -66,13 +84,12 @@ namespace UnitEditor
 			typeCell.Edited += delegate (object o, EditedArgs e) { 
 				TreePath path = new TreePath (e.Path);
 				TreeIter iter;
-				renderablesStore.GetIter (out iter, path);
+				m_renderables_store.GetIter (out iter, path);
 				int i = path.Indices[0];
 
-				Renderable r = renderables[i];
+				Renderable r = m_renderables[i];
 				r.type = e.NewText;
-				renderablesStore.SetValue (iter, 1, r.type);
-				Console.WriteLine("node:{0}, type:{1}, resource:{2}, visible:{3}", r.node, r.type, r.resource, r.visible);
+				m_renderables_store.SetValue (iter, 2, r.type);
 			};
 			typeColumn.PackStart (typeCell, true);
 
@@ -81,13 +98,12 @@ namespace UnitEditor
 			resourceCell.Edited += delegate (object o, EditedArgs e) { 
 				TreePath path = new TreePath (e.Path);
 				TreeIter iter;
-				renderablesStore.GetIter (out iter, path);
+				m_renderables_store.GetIter (out iter, path);
 				int i = path.Indices[0];
 
-				Renderable r = renderables[i];
+				Renderable r = m_renderables[i];
 				r.resource = e.NewText;
-				renderablesStore.SetValue (iter, 2, r.resource);
-				Console.WriteLine("node:{0}, type:{1}, resource:{2}, visible:{3}", r.node, r.type, r.resource, r.visible);
+				m_renderables_store.SetValue (iter, 3, r.resource);
 			};
 			resourceColumn.PackStart (resourceCell, true);
 
@@ -96,22 +112,24 @@ namespace UnitEditor
 			visibleCell.Toggled += delegate (object o, ToggledArgs e) {
 				TreePath path = new TreePath (e.Path);
 				TreeIter iter;
-				renderablesStore.GetIter (out iter, path);
+				m_renderables_store.GetIter (out iter, path);
 				int i = path.Indices[0];
 
-				Renderable r = renderables[i];
-				bool old = (bool) renderablesStore.GetValue(iter, 3);
+				Renderable r = m_renderables[i];
+				bool old = (bool) m_renderables_store.GetValue(iter, 4);
 				r.visible = !old;
-				renderablesStore.SetValue(iter, 3, !old);
-				Console.WriteLine("node:{0}, type:{1}, resource:{2}, visible:{3}", r.node, r.type, r.resource, r.visible);					
+				m_renderables_store.SetValue(iter, 4, !old);
 			};
 			visibleColumn.PackStart (visibleCell, true);
 
 			// Add the columns to the TreeView
-			nodeColumn.AddAttribute (nodeCell, "text", 0);
-			typeColumn.AddAttribute (typeCell, "text", 1);
-			resourceColumn.AddAttribute (resourceCell, "text", 2);
-			visibleColumn.AddAttribute (visibleCell, "active", 3);
+			nameColumn.AddAttribute (nameCell, "text", 0);
+			nodeColumn.AddAttribute (nodeCell, "text", 1);
+			typeColumn.AddAttribute (typeCell, "text", 2);
+			resourceColumn.AddAttribute (resourceCell, "text", 3);
+			visibleColumn.AddAttribute (visibleCell, "active", 4);
+
+			tree.AppendColumn (nameColumn);
 			tree.AppendColumn (nodeColumn);
 			tree.AppendColumn (typeColumn);
 			tree.AppendColumn (resourceColumn);
@@ -125,19 +143,17 @@ namespace UnitEditor
 
 		void create_model()
 		{
-			foreach (Renderable renderable in this.renderables.ToArray())
+			for (int i = 0; i < m_renderables.Count; i++)
 			{
-				add_renderable(renderable);
+				m_renderables_store.AppendValues (
+						m_renderables_names[i],
+						m_renderables[i].node,
+						m_renderables[i].type,
+						m_renderables[i].resource,
+						m_renderables[i].visible);
 			}
 		}
 
-		public void add_renderable (Renderable r)
-		{
-			this.renderables.Add (r);
-			this.renderablesStore.AppendValues (r.node, r.type, r.resource, r.visible);
-		}
-
-
 		static void delete_event (object obj, DeleteEventArgs args)
 		{
 			Application.Quit();

+ 2 - 0
tools/gui/UnitEditor/UnitEditor/UnitEditor.csproj

@@ -79,6 +79,8 @@
     <Compile Include="MainMenu.cs" />
     <Compile Include="gtk-gui\UnitEditor.MainMenu.cs" />
     <Compile Include="UnitFile.cs" />
+    <Compile Include="UnitNotebook.cs" />
+    <Compile Include="gtk-gui\UnitEditor.UnitNotebook.cs" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
 </Project>

+ 23 - 11
tools/gui/UnitEditor/UnitEditor/UnitFile.cs

@@ -10,9 +10,9 @@ namespace UnitEditor
 {
 	public class UnitFile
 	{
-		private JObject root;
-		private Dictionary<string, Renderable> renderables;
-		private Dictionary<string, Node> nodes;
+		private JObject m_root;
+		private Dictionary<string, Renderable> m_renderables;
+		private Dictionary<string, Node> m_nodes;
 
 		public UnitFile (string file_name)
 		{
@@ -21,27 +21,39 @@ namespace UnitEditor
 			using (StreamReader streamReader = new StreamReader(file_name))
 			{            
 				json_string = streamReader.ReadToEnd();
-				root = JObject.Parse (json_string);
+				m_root = JObject.Parse (json_string);
 			}
+
+			deserialize ();
+		}
+
+		public string[] renderables_names()
+		{
+			return m_renderables.Keys.ToArray ();
+		}
+
+		public Renderable[] renderables()
+		{
+			return m_renderables.Values.ToArray ();
 		}
 
 		public void deserialize()
 		{
 			// Deserialize renderables
-			JToken renderables_token = root ["renderables"];
-			renderables = JsonConvert.DeserializeObject<Dictionary<string, Renderable>>(renderables_token.ToString());
+			JToken renderables_token = m_root ["renderables"];
+			m_renderables = JsonConvert.DeserializeObject<Dictionary<string, Renderable>>(renderables_token.ToString());
 
 			// Deserialize Nodes
-			JToken nodes_token = root ["nodes"];
-			nodes = JsonConvert.DeserializeObject<Dictionary<string, Node>> (nodes_token.ToString ());
+			JToken nodes_token = m_root ["nodes"];
+			m_nodes = JsonConvert.DeserializeObject<Dictionary<string, Node>> (nodes_token.ToString ());
 		}
 
 		public void serialize()
 		{
 			string json_string = "{";
 			json_string += "\"renderables\": {";
-			string last = renderables.Keys.Last ();
-			foreach (var r in renderables)
+			string last = m_renderables.Keys.Last ();
+			foreach (var r in m_renderables)
 			{
 				var k = r.Key;
 				var v = r.Value;
@@ -53,7 +65,7 @@ namespace UnitEditor
 			json_string += "},\n";
 
 			json_string += "\"nodes\": {";
-			foreach (var n in nodes)
+			foreach (var n in m_nodes)
 			{
 				var k = n.Key;
 				var v = n.Value;

+ 22 - 0
tools/gui/UnitEditor/UnitEditor/UnitNotebook.cs

@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using Gtk;
+
+namespace UnitEditor
+{
+	[System.ComponentModel.ToolboxItem (true)]
+	public partial class UnitNotebook : Gtk.EventBox
+	{
+		public Notebook instance;
+
+
+		public UnitNotebook (string file_name)
+		{
+			instance = new Notebook ();
+
+			UnitEditor.RenderablesList renderables_list = new UnitEditor.RenderablesList (file_name);
+			instance.AppendPage (renderables_list, new Label("Renderables"));
+		}
+	}
+}
+

+ 19 - 0
tools/gui/UnitEditor/UnitEditor/gtk-gui/UnitEditor.UnitNotebook.cs

@@ -0,0 +1,19 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+namespace UnitEditor
+{
+	public partial class UnitNotebook
+	{
+		protected virtual void Build ()
+		{
+			global::Stetic.Gui.Initialize (this);
+			// Widget UnitEditor.UnitNotebook
+			global::Stetic.BinContainer.Attach (this);
+			this.Name = "UnitEditor.UnitNotebook";
+			if ((this.Child != null)) {
+				this.Child.ShowAll ();
+			}
+			this.Hide ();
+		}
+	}
+}

+ 7 - 0
tools/gui/UnitEditor/UnitEditor/gtk-gui/gui.stetic

@@ -37,4 +37,11 @@
       <placeholder />
     </child>
   </widget>
+  <widget class="Gtk.Bin" id="UnitEditor.UnitNotebook" design-size="644 503">
+    <property name="MemberName" />
+    <property name="Visible">False</property>
+    <child>
+      <placeholder />
+    </child>
+  </widget>
 </stetic-interface>