~ubuntu-branches/ubuntu/lucid/docky/lucid-proposed

« back to all changes in this revision

Viewing changes to Docky/Docky/DockletTile.cs

  • Committer: Bazaar Package Importer
  • Author(s): Christopher James Halse Rogers
  • Date: 2010-02-17 15:10:07 UTC
  • Revision ID: james.westby@ubuntu.com-20100217151007-msxpd0lsj300ndde
Tags: upstream-2.0.0
ImportĀ upstreamĀ versionĀ 2.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//  
 
2
//  Copyright (C) 2010 Chris Szikszoy
 
3
// 
 
4
//  This program is free software: you can redistribute it and/or modify
 
5
//  it under the terms of the GNU General Public License as published by
 
6
//  the Free Software Foundation, either version 3 of the License, or
 
7
//  (at your option) any later version.
 
8
// 
 
9
//  This program is distributed in the hope that it will be useful,
 
10
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
12
//  GNU General Public License for more details.
 
13
// 
 
14
//  You should have received a copy of the GNU General Public License
 
15
//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
16
// 
 
17
 
 
18
using System;
 
19
using System.Text.RegularExpressions;
 
20
 
 
21
using Mono.Unix;
 
22
using Mono.Addins;
 
23
 
 
24
using Docky.Widgets;
 
25
using Docky.Items;
 
26
using Docky.Services;
 
27
 
 
28
namespace Docky
 
29
{
 
30
 
 
31
        public class DockletTile : AbstractTileObject
 
32
        {
 
33
                public Addin Addin { get; private set; }
 
34
                public AbstractDockItemProvider Provider { get; private set; }
 
35
                Gtk.Button ConfigButton;
 
36
 
 
37
                public DockletTile (string addinID) : this (addinID, null)
 
38
                {
 
39
                }
 
40
                
 
41
                public DockletTile (string addinID, AbstractDockItemProvider provider)
 
42
                {
 
43
                        Addin = PluginManager.AddinFromID (addinID);
 
44
                        Provider = provider;
 
45
                        
 
46
                        ButtonStateDisabledText = Catalog.GetString ("_Add");
 
47
                        ButtonStateEnabledText = Catalog.GetString ("_Remove");
 
48
                        SubDescriptionTitle = Catalog.GetString ("Author");
 
49
                        Enabled = Addin.Enabled;
 
50
                        
 
51
                        Name = Addin.Name;
 
52
                        Description = Addin.Description.Description;
 
53
                        SubDescriptionText = Addin.Description.Author;
 
54
                        
 
55
                        ConfigButton = new Gtk.Button (Catalog.GetString ("Settings"));
 
56
                        ConfigButton.Clicked += delegate {
 
57
                                if (PluginManager.ConfigForAddin (Addin.Id) != null)
 
58
                                        PluginManager.ConfigForAddin (Addin.Id).Show ();
 
59
                        };
 
60
                        
 
61
                        UpdateInfo ();
 
62
                }
 
63
                
 
64
                void UpdateInfo ()
 
65
                {
 
66
                        if (Enabled && PluginManager.ConfigForAddin (Addin.Id) != null)
 
67
                                AddUserButton (ConfigButton);
 
68
                        else
 
69
                                RemoveUserButton (ConfigButton);
 
70
                        
 
71
                        if (Provider == null)
 
72
                                Icon = PluginManager.DefaultPluginIcon;
 
73
                        else
 
74
                                Icon = Provider.Icon;
 
75
                }
 
76
                
 
77
                public override void OnActiveChanged ()
 
78
                {
 
79
                        if (ConfigurationWindow.Instance.ActiveDock == null)
 
80
                                return;
 
81
                        
 
82
                        Enabled = !Enabled;
 
83
                        
 
84
                        if (Enabled) {
 
85
                                Provider = PluginManager.Enable (Addin);
 
86
                                ConfigurationWindow.Instance.ActiveDock.Preferences.AddProvider (Provider);
 
87
                        } else {
 
88
                                PluginManager.Disable (Addin);
 
89
                                ConfigurationWindow.Instance.ActiveDock.Preferences.RemoveProvider (Provider);
 
90
                                Provider = null;
 
91
                        }
 
92
                        
 
93
                        UpdateInfo ();
 
94
                }
 
95
        }
 
96
}