1
/* ProfileItemSource.cs
3
* GNOME Do is the legal property of its developers, whose names are too numerous
4
* to list here. Please refer to the COPYRIGHT file distributed with this
7
* This program is free software: you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation, either version 3 of the License, or
10
* (at your option) any later version.
12
* This program is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
17
* You should have received a copy of the GNU General Public License
18
* along with this program. If not, see <http://www.gnu.org/licenses/>.
22
using System.Collections.Generic;
24
using System.Text.RegularExpressions;
28
namespace GNOME.Terminal
31
public class ProfileItemSource : IItemSource
33
private static string GCONF_TERMINAL = "/apps/gnome-terminal/profiles";
37
public ProfileItemSource()
39
items = new List<IItem> ();
42
public string Name { get { return "Gnome Terminal Profiles"; } }
43
public string Description { get { return "Indexes your Gnome Terminal profiles."; } }
44
public string Icon { get { return "gnome-terminal"; } }
46
public Type[] SupportedItemTypes {
48
return new Type[] { typeof (ProfileItem) };
52
public ICollection<IItem> Items {
56
public ICollection<IItem> ChildrenOfItem (IItem parent)
61
public void UpdateItems ()
65
string gconfBase = Do.Paths.Combine (Do.Paths.UserHome, ".gconf");
66
string[] profiles = Directory.GetDirectories (gconfBase + GCONF_TERMINAL);
67
foreach (string _profile in profiles) {
68
string profile = Regex.Replace (_profile, gconfBase, "");
69
if (profile.EndsWith ("template", StringComparison.CurrentCultureIgnoreCase))
71
items.Add (new ProfileItem (profile));