static void BuildTreeChildren (Gtk.TreeStore store, Gtk.TreeIter parent, XContainer p)
		{
			foreach (XNode n in p.Nodes) {
				Gtk.TreeIter childIter;
				if (!parent.Equals (Gtk.TreeIter.Zero))
					childIter = store.AppendValues (parent, n);
				else
					childIter = store.AppendValues (n);
				
				XContainer c = n as XContainer;
				if (c != null && c.FirstChild != null)
					BuildTreeChildren (store, childIter, c);
			}
		}
            protected bool AddToMenu(Gtk.MenuItem parentMenu,
						  Gtk.MenuItem itemToBeAdded,
						  Gtk.MenuItem beforeThis)
            {
                Gtk.Menu menu = (Gtk.Menu) parentMenu.Submenu;
                if (menu == null)
                  {
                      menu = new Menu ();
                      menu.Show ();
                      parentMenu.Submenu = menu;
                  }
                if (beforeThis == null)
                  {
                      menu.Append (itemToBeAdded);
                      return true;
                  }

                // find the index
                int index = 0;
                foreach (Gtk.MenuItem item in menu.
                     AllChildren)
                {
                    if (beforeThis.Equals (item))
                      {
                          menu.Insert (itemToBeAdded,
                                   index);
                          return true;
                      }
                    index++;
                }
                return false;
            }
		void BuildTreeChildren (Gtk.TreeStore store, Gtk.TreeIter parent, ParentNode p, IList<Block> blocks)
		{
			foreach (Node node in p) {
				if (!(node is TagNode)) {
					var startLoc = new TextLocation (node.Location.BeginLine, node.Location.BeginColumn);
					var endLoc = new TextLocation (node.Location.EndLine, node.Location.EndColumn);
					var doc = defaultDocument.Editor.Document;

					var blocksBetween = blocks.Where (n => n.Start.AbsoluteIndex >= doc.GetOffset (startLoc)
						&& n.Start.AbsoluteIndex <= doc.GetOffset (endLoc));

					foreach (var block in blocksBetween) {
						var outlineNode = new OutlineNode (block) {
							Location = new DomRegion (doc.OffsetToLocation (block.Start.AbsoluteIndex),
								doc.OffsetToLocation (block.Start.AbsoluteIndex + block.Length))
						};
						if (!parent.Equals (Gtk.TreeIter.Zero))
							store.AppendValues (parent, outlineNode);
						else
							store.AppendValues (outlineNode);
					}
					continue;
				}

				Gtk.TreeIter childIter;
				if (!parent.Equals (Gtk.TreeIter.Zero))
					childIter = store.AppendValues (parent, new OutlineNode(node as TagNode));
				else
					childIter = store.AppendValues (new OutlineNode(node as TagNode));

				ParentNode pChild = node as ParentNode;
				if (pChild != null)
					BuildTreeChildren (store, childIter, pChild, blocks);
			}
		}
		void AddToTree (Gtk.TreeStore treeStore, Gtk.TreeIter iter, PDictionary dict)
		{
			iterTable[dict] = iter;
			foreach (var item in dict) {
				var key = item.Key.ToString ();
				var subIter = iter.Equals (TreeIter.Zero) ? treeStore.AppendValues (key, item.Value) : treeStore.AppendValues (iter, key, item.Value);
				if (item.Value is PArray)
					AddToTree (treeStore, subIter, (PArray)item.Value);
				if (item.Value is PDictionary)
					AddToTree (treeStore, subIter, (PDictionary)item.Value);
				if (expandedObjects.Contains (item.Value))
					treeview.ExpandRow (treeStore.GetPath (subIter), true);
			}
			AddCreateNewEntry (iter);
			
			if (!rebuildArrays.Contains (dict)) {
				rebuildArrays.Add (dict);
				dict.Changed += HandleDictRebuild;
			}
		}
		void BuildTreeChildren (Gtk.TreeStore store, Gtk.TreeIter parent, XContainer p, IList<Block> blocks)
		{
			foreach (XNode node in p.Nodes) {
				var el = node as XElement;
				if (el == null) {
					var startLoc = node.Region.Begin;
					var endLoc = node.Region.End;
					var doc = defaultDocument.Editor.Document;

					var blocksBetween = blocks.Where (n => n.Start.AbsoluteIndex >= doc.GetOffset (startLoc)
						&& n.Start.AbsoluteIndex <= doc.GetOffset (endLoc));

					foreach (var block in blocksBetween) {
						var outlineNode = new RazorOutlineNode (block) {
							Location = new DomRegion (doc.OffsetToLocation (block.Start.AbsoluteIndex),
								doc.OffsetToLocation (block.Start.AbsoluteIndex + block.Length))
						};
						if (!parent.Equals (Gtk.TreeIter.Zero))
							store.AppendValues (parent, outlineNode);
						else
							store.AppendValues (outlineNode);
					}
					continue;
				}

				Gtk.TreeIter childIter;
				if (!parent.Equals (Gtk.TreeIter.Zero))
					childIter = store.AppendValues (parent, new RazorOutlineNode(el));
				else
					childIter = store.AppendValues (new RazorOutlineNode(el));

				BuildTreeChildren (store, childIter, el, blocks);
			}
		}
Esempio n. 6
0
        protected override void OnAdded(Gtk.Widget widget)
        {
            if (widget.Equals(this.vboxWindow))
                base.OnAdded (widget);

            this.vboxClient.PackStart (widget, true, true, 0);
            widget.Show();
        }
		public void LoadRepositories (Repository r, Gtk.TreeIter parent)
		{
			if (r.VersionControlSystem == null)
				return;

			TreeIter it;
			if (!parent.Equals (TreeIter.Zero))
				it = store.AppendValues (parent, r, r.Name, r.VersionControlSystem.Name, false, "vc-repository");
			else
				it = store.AppendValues (r, r.Name, r.VersionControlSystem.Name, false, "vc-repository");

			try {
				if (r.HasChildRepositories)
					store.AppendValues (it, null, "", "", true, null);
			}
			catch (Exception ex) {
				LoggingService.LogError (ex.ToString ());
			}
		}
Esempio n. 8
0
			public int IterNChildren (Gtk.TreeIter iter)
			{
				if (iter.Equals (TreeIter.Zero))
					return Nodes.Count;
				else
					return GetNode (iter).ChildCount;
			}
        protected virtual void AddNode(string label, object customizer, Gtk.TreeIter iter, IDialogPanelDescriptor descriptor)
        {
            if (descriptor.DialogPanel != null) { // may be null, if it is only a "path"
                descriptor.DialogPanel.CustomizationObject = customizer;
                ((Gtk.Frame)descriptor.DialogPanel.Control).Shadow = Gtk.ShadowType.None;
                OptionPanels.Add (descriptor.DialogPanel);
                mainBook.AppendPage (descriptor.DialogPanel.Control, new Gtk.Label ("a"));
            }

            Gtk.TreeIter i;
            if (iter.Equals (Gtk.TreeIter.Zero)) {
                i = treeStore.AppendValues (label, descriptor);
            } else {
                i = treeStore.AppendValues (iter, label, descriptor);
            }

            AddChildNodes (customizer, i, descriptor);
        }
 bool IsChildIter(Gtk.TreeIter pit, Gtk.TreeIter cit, bool recursive)
 {
     while (store.IterParent (out cit, cit)) {
         if (cit.Equals (pit)) return true;
         if (!recursive) return false;
     }
     return false;
 }
        /**
         * Gets both iters from the provided ListStore obj based on the passed TreePath object(the selected row)
         */
        private bool getPrevIterFromSelection(out Gtk.TreeIter selectedIter, out Gtk.TreeIter prevIter, 
                                                Gtk.TreePath selectedRow,  Gtk.ListStore listModel)
        {
            
            listModel.GetIter(out selectedIter, selectedRow);
            selectedRow.Prev();
            listModel.GetIter(out prevIter, selectedRow);

            return  (prevIter.Stamp!=0 && !prevIter.Equals(selectedIter));
        }
        /**
         * Gets both iters from the provided ListStore obj based on the passed TreePath object(the selected row)
         */

        private bool getNextIterFromSelection(out Gtk.TreeIter selectedIter, out Gtk.TreeIter nextIter, 
                                                Gtk.TreePath selectedRow,  Gtk.ListStore listModel)
        {
            
            listModel.GetIter(out selectedIter, selectedRow);
            selectedRow.Next();
            listModel.GetIter(out nextIter, selectedRow);

            return (nextIter.Stamp!=0  && !nextIter.Equals(selectedIter));
        }
Esempio n. 13
0
        public void GetSelectedFileDirectory(out string filename, out int fileTyp, out Gtk.TreeIter ti)
        {
            GetSelectedFile(out filename, out fileTyp, out ti);
            if(fileTyp == (int)TypeFile.Directory)
                return;

            ti = GetSelectedParentTreeIter(false);

            //if (ti. != null) {
            if(!ti.Equals(TreeIter.Zero)){
                filename = store.GetValue(ti, PATH_ROW).ToString();
                fileTyp = (Int32)store.GetValue(ti, TYPE_ROW);
            } else {
                filename = "";
                fileTyp = -1;
            }
        }
Esempio n. 14
0
        public void GetSelectedFile(out string filename, out int fileTyp, out Gtk.TreeIter ti)
        {
            ti = GetSelectedIter();
            //if(ti.Equals(TreeIter.Zero)) return;
            //if (ti == TreeIter.Zero)

            //if (ti. != null) {
            if(!ti.Equals(TreeIter.Zero)){
                filename = store.GetValue(ti, PATH_ROW).ToString();
                fileTyp = (Int32)store.GetValue(ti, TYPE_ROW);
            } else {
                filename = "";
                fileTyp = -1;
            }
        }
		ChildInfo FillDirRec (Gtk.TreeIter iter, IWorkspaceFileObject item, HashSet<string> itemFiles, HashSet<string> knownPaths, FilePath dir, bool forceSet)
		{
			ChildInfo cinfo = ChildInfo.AllSelected;
			bool hasChildren = false;
			
			foreach (string sd in knownSubdirs) {
				if (dir == item.BaseDirectory.Combine (sd)) {
					forceSet = true;
					break;
				}
			}
			
			TreeIter dit;
			if (!iter.Equals (TreeIter.Zero)) {
				dit = store.AppendValues (iter, false, DesktopService.GetPixbufForFile (dir, IconSize.Menu), dir.FileName.ToString (), dir.ToString ());
				fileList.ExpandRow (store.GetPath (iter), false);
			}
			else
				dit = store.AppendValues (false, DesktopService.GetPixbufForFile (dir, IconSize.Menu), dir.FileName.ToString (), dir.ToString ());
			
			paths [dir] = dit;
			
			foreach (string file in Directory.GetFiles (dir)) {
				string path = System.IO.Path.GetFileName (file);
				Gdk.Pixbuf pix = DesktopService.GetPixbufForFile (file, IconSize.Menu);
				bool active = itemFiles.Contains (file);
				string color = null;
				if (!active) {
					pix = ImageService.MakeTransparent (pix, 0.5);
					color = "dimgrey";
				} else
					cinfo |= ChildInfo.HasProjectFiles;
				
				active = active || forceSet || knownPaths.Contains (file);
				if (!active)
					cinfo &= ~ChildInfo.AllSelected;
				else
					cinfo |= ChildInfo.SomeSelected;

				paths [file] = store.AppendValues (dit, active, pix, path, file, color);
				if (!hasChildren) {
					hasChildren = true;
					fileList.ExpandRow (store.GetPath (dit), false);
				}
			}
			foreach (string cdir in Directory.GetDirectories (dir)) {
				hasChildren = true;
				ChildInfo ci = FillDirRec (dit, item, itemFiles, knownPaths, cdir, forceSet);
				if ((ci & ChildInfo.AllSelected) == 0)
					cinfo &= ~ChildInfo.AllSelected;
				cinfo |= ci & (ChildInfo.SomeSelected | ChildInfo.HasProjectFiles);
			}
			if ((cinfo & ChildInfo.AllSelected) != 0 && hasChildren)
				store.SetValue (dit, 0, true);
			if ((cinfo & ChildInfo.HasProjectFiles) == 0) {
				Gdk.Pixbuf pix = DesktopService.GetPixbufForFile (dir, IconSize.Menu);
				pix = ImageService.MakeTransparent (pix, 0.5);
				store.SetValue (dit, 1, pix);
				store.SetValue (dit, 4, "dimgrey");
			}
			if ((cinfo & ChildInfo.SomeSelected) != 0 && (cinfo & ChildInfo.AllSelected) == 0) {
				fileList.ExpandRow (store.GetPath (dit), false);
			} else {
				fileList.CollapseRow (store.GetPath (dit));
			}
			return cinfo;
		}
Esempio n. 16
0
			public bool IterChildren (out Gtk.TreeIter first_child, Gtk.TreeIter parent)
			{
				first_child = Gtk.TreeIter.Zero;

				if (parent.Equals (TreeIter.Zero)) {
					if (Nodes.Count <= 0)
						return false;
					first_child = GetIter (Nodes [0] as ITreeNode);
				} else {
					ITreeNode node = GetNode (parent);
					if (node.ChildCount <= 0)
						return false;

					first_child = GetIter (node [0]);
				}
				return true;
			}
 protected virtual Gtk.TreeIter AddPath(string label, Gtk.TreeIter iter)
 {
     if (iter.Equals (Gtk.TreeIter.Zero))
         return treeStore.AppendValues (label, null);
     else
         return treeStore.AppendValues (iter, label, null);
 }
Esempio n. 18
0
			public bool IterNthChild (out Gtk.TreeIter child, Gtk.TreeIter parent, int n)
			{
				child = TreeIter.Zero;

				if (parent.Equals (TreeIter.Zero)) {
					if (Nodes.Count <= n)
						return false;
					child = GetIter (Nodes [n] as ITreeNode);
				} else {
					ITreeNode parent_node = GetNode (parent);
					if (parent_node.ChildCount <= n)
						return false;
					child = GetIter (parent_node [n]);
				}
				return true;
			}
		bool FindChildByName (string name, ref Gtk.TreeIter iter)
		{
			if (iter.Equals (Gtk.TreeIter.Zero)) {
				if (!store.GetIterFirst (out iter))
					return false;
			} else if (!store.IterChildren (out iter, iter))
				return false;
			
			do {
				if (name == (string) store.GetValue (iter, ColSignal))
					return true;
			}
			while (store.IterNext (ref iter));
			
			return false;
		}
Esempio n. 20
0
		private byte [] SerializeToHtml (Gtk.TextBuffer register_buffer, Gtk.TextBuffer content_buffer, Gtk.TextIter start, Gtk.TextIter end)
		{
			if (start.Equals (end) || start.Equals (Gtk.TextIter.Zero) || end.Equals (Gtk.TextIter.Zero) || HtmlTransform == null) {
				return new byte [0];
			}

			Logger.Debug ("Handling text/html Clipboard copy/cut request");
			var xsl = HtmlTransform;

			string xml = String.Format (
				"<note version=\"0.3\" xmlns:link=\"http://beatniksoftware.com/tomboy/link\" xmlns:size=\"http://beatniksoftware.com/tomboy/size\">{0}</note>",
				NoteBufferArchiver.Serialize (register_buffer, start, end)
			);

			var reader = new StringReader (xml);
			var doc = new XPathDocument (reader);
			var args = new XsltArgumentList ();

			var writer = new StringWriter ();
			xsl.Transform (doc, args, writer);

			string html = writer.ToString ();
			byte [] bytes = System.Text.Encoding.UTF8.GetBytes (html);
			return bytes;
		}
Esempio n. 21
0
 internal void MoveToIter(Gtk.TreeIter iter)
 {
     currentNavIter = iter;
     if (!iter.Equals (Gtk.TreeIter.Zero))
         dataItem = GetStoreValue (ExtensibleTreeView.DataItemColumn);
     else
         dataItem = null;
 }
		void SetNoEntries (Gtk.TreeIter iter)
		{
			if (iter.Equals (TreeIter.Zero)) {
				treeStore.AppendValues (GettextCatalog.GetString ("No entries"), null);
				return;
			}
			treeStore.AppendValues (iter, GettextCatalog.GetString ("No entries"), null);
		}
Esempio n. 23
0
		public int IterNChildren (Gtk.TreeIter iter)
		{
			if (iter.Equals (Gtk.TreeIter.Zero))
				return source.RowCount;
			else
				return 0;
		}
Esempio n. 24
0
		void AddCreateNewEntry (Gtk.TreeIter iter)
		{
			if (iter.Equals (TreeIter.Zero)) {
				treeStore.AppendValues (GettextCatalog.GetString (AddKeyNode), null);
				return;
			}
			treeStore.AppendValues (iter, GettextCatalog.GetString (AddKeyNode), null);
		}
Esempio n. 25
0
		public bool IterNthChild (out Gtk.TreeIter iter, Gtk.TreeIter parent, int n)
		{
			if (parent.Equals (Gtk.TreeIter.Zero)) {
				iter = IterFromNode (n);
				return true;
			} else {
				iter = Gtk.TreeIter.Zero;
				return false;
			}
		}
Esempio n. 26
0
		void AddToTree (Gtk.TreeStore treeStore, Gtk.TreeIter iter, PArray arr)
		{
			iterTable[arr] = iter;
			
			for (int i = 0; i < arr.Count; i++) {
				var item = arr[i];
				
				var txt = string.Format (GettextCatalog.GetString ("Item {0}"), i);
				var subIter = iter.Equals (TreeIter.Zero) ? treeStore.AppendValues (txt, item) : treeStore.AppendValues (iter, txt, item);
				
				if (item is PArray)
					AddToTree (treeStore, subIter, (PArray)item);
				if (item is PDictionary)
					AddToTree (treeStore, subIter, (PDictionary)item);
				if (expandedObjects.Contains (item))
					treeview.ExpandRow (treeStore.GetPath (subIter), true);
			}

			AddCreateNewEntry  (iter);
			
			if (!rebuildArrays.Contains (arr)) {
				rebuildArrays.Add (arr);
				arr.Changed += HandleArrRebuild;
			}
		}
Esempio n. 27
0
            public TreeMapItem(Gtk.TreeModel m,
			                    ref Gtk.TreeIter iter,
			                    bool horiz,
			                    int textColumn,
			                    int weightColumn)
            {
                if (m == null)
                    throw new ArgumentNullException ("m");

                if (iter.Equals (Gtk.TreeIter.Zero))
                    throw new ArgumentException ("iter");

                if (textColumn < 0)
                    throw new ArgumentException ("textColumn");

                if (weightColumn < 0)
                    throw new ArgumentException ("weightColumn");

                Path = m.GetPath (iter);
                Title = (string)m.GetValue (iter, textColumn);
                Weight = (double)m.GetValue (iter, weightColumn);
                X = 0;
                Y = 0;
                Width = 0;
                Height = 0;
                Children = null;
                Horiz = horiz;

                Gtk.TreeIter citer;
                double c_total = 0.0;

                if (m.IterChildren (out citer, iter)) {
                    do {
                        AddChild (new TreeMapItem (m, ref citer, !horiz, textColumn, weightColumn));
                    } while (m.IterNext (ref citer));

                    // Get total weight
                    Children.ForEach (delegate (TreeMapItem i) {
                        c_total += Math.Abs (i.Weight);
                    });

                    this.ChildrenWeight = c_total;
                }
            }