~quequotion/glippy/glippy

« back to all changes in this revision

Viewing changes to src/tray/Tray.cs

  • Committer: Que Quotion
  • Date: 2018-07-01 13:34:36 UTC
  • Revision ID: quequotion@bugmenot.com-20180701133436-usy073goo274fh6a
Glippy: Simple, powerful clipboard manager

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* 
 
2
 * Glippy
 
3
 * Copyright © 2010, 2011, 2012 Wojciech Kowalczyk
 
4
 * The program is distributed under the terms of the GNU General Public License Version 3.
 
5
 * See LICENCE for details.
 
6
 */
 
7
 
 
8
using System;
 
9
using Glippy.Core;
 
10
using Glippy.Core.Api;
 
11
using Gtk;
 
12
using Mono.Unix;
 
13
 
 
14
namespace Glippy.Tray
 
15
{
 
16
        /// <summary>
 
17
        /// Status tray icon class.
 
18
        /// </summary>
 
19
        public class Tray : ITray
 
20
        {
 
21
                /// <summary>
 
22
                /// Status icon.
 
23
                /// </summary>
 
24
                private StatusIcon statusIcon;
 
25
                
 
26
                /// <summary>
 
27
                /// Menu reference.
 
28
                /// </summary>
 
29
                private Menu menu;
 
30
                
 
31
                /// <summary>
 
32
                /// Function which rebuilds menu.
 
33
                /// </summary>
 
34
                private MenuFunc RebuildMenu;
 
35
                
 
36
                /// <summary>
 
37
                /// Gets plugin name.
 
38
                /// </summary>
 
39
                public string Name { get; private set; }
 
40
                
 
41
                /// <summary>
 
42
                /// Gets plugin description.
 
43
                /// </summary>
 
44
                public string Description { get; private set; }
 
45
                                
 
46
                /// <summary>
 
47
                /// Creates new instance of Tray class.
 
48
                /// </summary>
 
49
                public Tray()
 
50
                {                                               
 
51
                        this.Name = Catalog.GetString("Tray icon");
 
52
                        this.Description = Catalog.GetString("Notification area icon.");
 
53
                }
 
54
                
 
55
                /// <summary>
 
56
                /// Loads tray plugin.
 
57
                /// </summary>
 
58
                /// <param name="menu">Menu reference.</param>          
 
59
                /// <param name="rebuildMenuFunc">Rebuild menu function.</param>                
 
60
                public void Load(Menu menu, MenuFunc rebuildMenuFunc)
 
61
                {
 
62
                        this.menu = menu;
 
63
                        this.RebuildMenu = rebuildMenuFunc;
 
64
                        this.statusIcon = new StatusIcon();
 
65
                        this.statusIcon.IconName = EnvironmentVariables.PanelIcon;
 
66
                        this.statusIcon.Activate += this.OnStatusIconActivated;                                 
 
67
                }
 
68
                
 
69
                /// <summary>
 
70
                /// Unloads tray plugin.
 
71
                /// </summary>
 
72
                public void Unload()
 
73
                {
 
74
                        this.statusIcon.Visible = false;
 
75
                        this.statusIcon = null;                 
 
76
                }
 
77
                
 
78
                /// <summary>
 
79
                /// Rebuilds and shows menu after icon activation.
 
80
                /// </summary>
 
81
                /// <param name="sender">Sender</param>
 
82
                /// <param name="args">Event arguments.</param>
 
83
                private void OnStatusIconActivated(object sender, EventArgs args)
 
84
                {
 
85
                        this.menu = this.RebuildMenu();
 
86
                        this.menu.Popup();      
 
87
                }
 
88
                
 
89
                /// <summary>
 
90
                /// Handles Clipboard's ClipboardChanged event.
 
91
                /// </summary>
 
92
                /// <param name="sender">Sender.</param>
 
93
                /// <param name="args">Event arguments.</param>
 
94
                public void OnClipboardChanged(object sender, ClipboardChangedArgs args)
 
95
                {
 
96
                }
 
97
                
 
98
                /// <summary>
 
99
                /// Handles SettingChanged event.
 
100
                /// </summary>
 
101
                /// <param name="sender">Sender.</param>
 
102
                /// <param name="args">Event arguments.</param>
 
103
                public void OnSettingChanged(object sender, SettingChangedArgs args)
 
104
                {
 
105
                }
 
106
                
 
107
                public void OnMenuRebuilt(object sender, Gtk.Menu menu)
 
108
                {               
 
109
                }
 
110
        }
 
111
}