public override void AskYesNoQuestion (string title, string message, Gdk.Pixbuf icon, string ok_string, string cancel_string, EventHandler ok_handler, EventHandler cancel_handler) { Notification notify = new Notification (title, message, icon); notify.Timeout = 60000; notify.AddAction (cancel_string, cancel_string, delegate { if (cancel_handler != null) cancel_handler (null, null); currentNotification = null; }); notify.AddAction (ok_string, ok_string, delegate { if (ok_handler != null) ok_handler (null, null); currentNotification = null; }); notify.Closed += delegate { if (cancel_handler != null) cancel_handler (null, null); currentNotification = null; }; if (currentNotification != null) { Logger.Debug ("RECEIVE: HandleSendRequest: Found a notification... closing it"); currentNotification.Close(); currentNotification = null; } currentNotification = notify; currentNotification.Show (); }
public PryanetBubbles() { Controller.ShowBubbleEvent += delegate (string title, string subtext, string image_path) { if (!Program.Controller.NotificationsEnabled) return; try { Notification notification = new Notification () { Summary = title, Body = subtext, Timeout = 5 * 1000, Urgency = Urgency.Low }; if (image_path != null) notification.Icon = new Gdk.Pixbuf (image_path); else notification.IconName = "folder-pryanetshare"; notification.Closed += delegate (object o, EventArgs args) { if ((args as CloseArgs).Reason == CloseReason.User) Controller.BubbleClicked (); }; notification.Show (); } catch (Exception e) { PryanetLogger.LogInfo ("Notification", "Error showing notification: ", e); } }; }
public Notifier () { _enabled = true; _queue = new Queue<NotificationMessage> (); _sync = ((ICollection) _queue).SyncRoot; _waitHandle = new ManualResetEvent (false); ThreadPool.QueueUserWorkItem ( state => { while (_enabled || Count > 0) { var msg = dequeue (); if (msg != null) { #if UBUNTU var nf = new Notification (msg.Summary, msg.Body, msg.Icon); nf.AddHint ("append", "allowed"); nf.Show (); #else Console.WriteLine (msg); #endif } else { Thread.Sleep (500); } } _waitHandle.Set (); }); }
internal static void SuggestTask() { SetPidginStatus("Available", ""); Notification notify; Tasks tasks = new Tasks(); tasks.Load(); Task task = tasks.GetPriority(); if (task != null) { notify = new Notification("Tasks", "This is the next priority task:\n" + task.Summary); notify.AddAction("select", "Select", HandleSelectTask); notify.AddAction("postpone", "Delay", HandlePostponeTask); notify.AddAction("AddTask", "Add Task", HandleAddTask); notify.Timeout = 0; notify.Urgency = Urgency.Critical; notify.Show(); } else { notify = new Notification("Tasks", "What are you working on?"); notify.AddAction("AddTask", "Add Task", HandleAddTask); notify.Timeout = 0; notify.Urgency = Urgency.Critical; notify.Show(); } }
public SparkleBubbles() { Controller.ShowBubbleEvent += delegate (string title, string subtext, string image_path) { try { Notification notification = new Notification () { Summary = title, Body = subtext, Timeout = 5 * 1000, Urgency = Urgency.Low }; if (image_path != null) notification.Icon = new Gdk.Pixbuf (image_path); else notification.IconName = "folder-sparkleshare"; notification.Closed += delegate (object o, EventArgs args) { if ((args as CloseArgs).Reason == CloseReason.User) Controller.BubbleClicked (); }; notification.Show (); } catch (Exception) { // Ignore exceptions thrown by libnotify, // they're not important enough to crash } }; }
public SparkleBubbles() { Controller.ShowBubbleEvent += delegate (string title, string subtext, string image_path) { try { Notification notification = new Notification () { Timeout = 5 * 1000, Urgency = Urgency.Low }; if (image_path != null) notification.Icon = new Gdk.Pixbuf (image_path); else notification.IconName = "folder-sparkleshare"; notification.Closed += delegate { Application.Invoke (delegate { if (SparkleUI.EventLog == null) SparkleUI.EventLog = new SparkleEventLog (); SparkleUI.EventLog.Controller.SelectedFolder = null; SparkleUI.EventLog.ShowAll (); SparkleUI.EventLog.Present (); }); }; notification.Show (); } catch (Exception) { // Ignore exceptions thrown by libnotify, // they're not important enough to crash } }; }
internal static void SendReport(string from_email, string to_email, string subject, string message, DateTime today) { try { TaskSettings settings = new TaskSettings(); settings = settings.Load(); MailAddress from_address = new MailAddress(from_email, settings.name); MailAddress to_address = new MailAddress(to_email); MailMessage mail = new MailMessage(from_address, to_address); string date = today.Year + "-" + today.Month + "-" + today.Day; mail.Subject = subject.Replace("<Date>", date); mail.Body = message; SmtpClient smtpclient = new SmtpClient(settings.smtpServer); smtpclient.Credentials = new NetworkCredential(settings.email, settings.password); smtpclient.EnableSsl = true; smtpclient.Port = Convert.ToInt32(settings.smtpport); smtpclient.Send(mail); } catch (Exception e) { Notification notify = new Notification("Task Tracker: " + e.Message, ""); notify.Urgency = Urgency.Critical; notify.Show(); } }
public static LibNotify.Notification Notify(string title, string message, string icon) { try { LibNotify.Notification notify = ToNotify(title, message, icon); // if we aren't using notify-osd, show a status icon if (!ServerIsNotifyOSD()) { DockServices.System.RunOnMainThread(() => statusIcon.Visible = true); notify.Closed += delegate { DockServices.System.RunOnMainThread(() => statusIcon.Visible = false); }; } notify.Show(); return(notify); } catch (Exception e) { Log <NotificationService> .Warn("Error showing notification: {0}", e.Message); Log <NotificationService> .Debug(e.StackTrace); return(null); } }
private void ShowBubbleEvent (string title, string subtext, string image_path) { if (!Program.Controller.NotificationsEnabled) return; Application.Invoke (delegate { Notification notification = new Notification () { Summary = title, Body = subtext, Timeout = 5 * 1000, Urgency = Urgency.Low }; if (image_path != null) notification.Icon = new Gdk.Pixbuf (image_path); else notification.IconName = "folder-sparkleshare"; try { notification.Show (); } catch (Exception e) { SparkleLogger.LogInfo ("Notification", "Error showing notification: ", e); } }); }
public static void Main(string[] args) { /*Application.Init (); * //MainWindow win = new MainWindow (); * win = new MainWindow (); * * * win.setHint(); * * * * // Gdk.WindowType.Utility * win.Show (); * Application.Run (); */ Mono.Unix.Catalog.Init("lliurex-miniscreen", "/usr/share/locale"); Application.Init(); LliureXMiniScreen.Core.getCore(); LliureXMiniScreen.Core.getCore().win.setHint(); string sumary = "LliureX MiniScreen"; string body = Mono.Unix.Catalog.GetString("To Quit, press right button on MiniScreen and select Quit."); /*string icon="/usr/share/icons/LliureX-Accessibility/Lliurex-MiniScreen.png";*/ string icon = "lliurex-miniscreen"; Notifications.Notification note = new Notifications.Notification(sumary, body, icon); note.Show(); Application.Run(); }
static void Daily() { Reports dailyreport = new Reports(); dailyreportmessage = dailyreport.CompileDailyReport(selected); Notification notify = new Notification(); notify.Summary = "Daily Report " + selected.ToShortDateString(); notify.Body = dailyreportmessage; notify.AddAction("send", "Send", HandleSendReport); notify.Urgency = Urgency.Critical; notify.Show(); }
public static void Main(string[] args) { //using (WebSocket ws = new WebSocket("ws://localhost:8000/")) using (WebSocket ws = new WebSocket("ws://localhost:8000/", "chat")) { /*ws.OnOpen += (o, e) => { //Do something. }; */ ws.OnMessage += (o, s) => { #if NOTIFY Notification nf = new Notification("[WebSocket] Message", s, "notification-message-im"); nf.AddHint("append", "allowed"); nf.Show(); #else Console.WriteLine("[WebSocket] Message: {0}", s); #endif }; ws.OnError += (o, s) => { Console.WriteLine("[WebSocket] Error : {0}", s); }; /*ws.OnClose += (o, e) => { //Do something. }; */ ws.Connect(); Thread.Sleep(500); Console.WriteLine("\nType \"exit\" to exit.\n"); string data; while (true) { Thread.Sleep(500); Console.Write("> "); data = Console.ReadLine(); if (data == "exit") { break; } ws.Send(data); } } }
static void HandleDailyReportActivated(object sender, EventArgs e) { Reports dailyreport = new Reports(); dailyreportmessage = dailyreport.CompileDailyReport(); Notification notify = new Notification(); notify.Summary = "Daily Report"; notify.Body = dailyreportmessage; notify.AddAction("send", "Send", HandleSendDaily); notify.AddAction("select", "Select Date", HandleSelectedReportActivated); notify.Urgency = Urgency.Critical; notify.Show(); }
public SparkleBubbles() { Controller.ShowBubbleEvent += delegate (string title, string subtext, string image_path) { Notification notification = new Notification () { Timeout = 5 * 1000, Urgency = Urgency.Low }; if (image_path != null) notification.Icon = new Gdk.Pixbuf (image_path); else notification.IconName = "folder-sparkleshare"; notification.Show (); }; }
public SparkleBubbles() { Controller.ShowBubbleEvent += delegate (string title, string subtext, string image_path) { if (!Program.Controller.NotificationsEnabled) return; try { // Debug information for https://github.com/hbons/SparkleShare/issues/1362 if (title.Length > 255) { SparkleLogger.LogInfo ("Notification", "Long string detected, truncating 'title'"); title = title.Substring (0, 255) + "..."; } else if (subtext.Length > 255) { SparkleLogger.LogInfo ("Notification", "Long string detected, truncating 'subtext'"); title = title.Substring (0, 255) + "..."; } Notification notification = new Notification () { Summary = title, Body = subtext, Timeout = 5 * 1000, Urgency = Urgency.Low }; if (image_path != null) notification.Icon = new Gdk.Pixbuf (image_path); else notification.IconName = "folder-sparkleshare"; notification.Closed += delegate (object o, EventArgs args) { if ((args as CloseArgs).Reason == CloseReason.User) Controller.BubbleClicked (); }; notification.Show (); } catch (Exception e) { SparkleLogger.LogInfo ("Notification", "Error showing notification: ", e); } }; }
internal static void DisplayMessage() { Tasks tasks = new Tasks(); tasks.Load(); Task current = tasks.CurrentTask(); Notification notify; if (current != null) { notify = new Notification("Tasks", "Are you still working on this task?\n" + current.Summary); notify.AddAction("yes", "Yes", HandleDoNothing); notify.AddAction("view", "View", HandleEditTask); notify.AddAction("finish", "Finish", HandleFinishedTask); notify.Timeout = 0; notify.Urgency = Urgency.Critical; notify.Show(); } else { SuggestTask(); } }
public SparkleBubbles() { Controller.ShowBubbleEvent += delegate (string title, string subtext, string image_path) { try { Notification notification = new Notification () { Timeout = 5 * 1000, Urgency = Urgency.Low }; if (image_path != null) notification.Icon = new Gdk.Pixbuf (image_path); else notification.IconName = "folder-sparkleshare"; notification.Show (); } catch (Exception) { // Ignore exceptions thrown by libnotify, // they're not important enough to crash } }; }
protected void OnButtonOkClicked(object sender, System.EventArgs e) { TaskSettings settings = new TaskSettings(); string data = interval.Text; try { settings.interval = Int32.Parse(data)*1000*60; //Convert Minutes into milliseconds. settings.name = name.Text; settings.email = email_address.Text; settings.subject = email_subject.Text; settings.destination = email_destination.Text; settings.smtpServer = smtp_server.Text; settings.smtpport = smtp_port.Text; settings.password = email_password.Text; settings.Save(); this.Destroy(); } catch (Exception i) { Notification error = new Notification("Error", i.Message, Stock.Stop); error.Show(); } }
public static void Main(string[] args) { var ts = new ThreadState(); WaitCallback notifyMsg = state => { while (ts.Enabled || _msgQ.Count > 0) { Thread.Sleep(500); if (_msgQ.Count > 0) { var msg = (NfMessage)_msgQ.Dequeue(); #if NOTIFY var nf = new Notification(msg.Summary, msg.Body, msg.Icon); nf.AddHint("append", "allowed"); nf.Show(); #else Console.WriteLine("{0}: {1}", msg.Summary, msg.Body); #endif } } ts.Notification.Set(); }; ThreadPool.QueueUserWorkItem(notifyMsg); using (var ws = new WebSocket("ws://echo.websocket.org", "echo")) //using (var ws = new WebSocket("wss://echo.websocket.org", "echo")) //using (var ws = new WebSocket("ws://localhost:4649")) //using (var ws = new WebSocket("ws://localhost:4649/Echo")) //using (var ws = new WebSocket("wss://localhost:4649/Echo")) //using (var ws = new WebSocket("ws://localhost:4649/Echo?name=nobita")) //using (var ws = new WebSocket("ws://localhost:4649/エコー?name=のび太")) //using (var ws = new WebSocket("ws://localhost:4649/Chat")) //using (var ws = new WebSocket("ws://localhost:4649/Chat?name=nobita")) //using (var ws = new WebSocket("ws://localhost:4649/チャット?name=のび太")) { ws.OnOpen += (sender, e) => { ws.Send("Hi, all!"); }; ws.OnMessage += (sender, e) => { if (!String.IsNullOrEmpty(e.Data)) { enNfMessage("[WebSocket] Message", e.Data, "notification-message-im"); } }; ws.OnError += (sender, e) => { enNfMessage("[WebSocket] Error", e.Message, "notification-message-im"); }; ws.OnClose += (sender, e) => { enNfMessage( String.Format("[WebSocket] Close({0})", e.Code), e.Reason, "notification-message-im"); }; #if DEBUG ws.Log.Level = LogLevel.TRACE; #endif //ws.Compression = CompressionMethod.DEFLATE; //ws.Origin = "http://echo.websocket.org"; //ws.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => //{ // ws.Log.Debug(String.Format("\n{0}\n{1}", certificate.Issuer, certificate.Subject)); // return true; //}; //ws.SetCookie(new Cookie("nobita", "\"idiot, gunfighter\"")); //ws.SetCookie(new Cookie("dora", "tanuki")); ws.Connect(); //Console.WriteLine("Compression: {0}", ws.Compression); Thread.Sleep(500); Console.WriteLine("\nType \"exit\" to exit.\n"); string data; while (true) { Thread.Sleep(500); Console.Write("> "); data = Console.ReadLine(); if (data == "exit") //if (data == "exit" || !ws.IsAlive) { break; } ws.Send(data); } } ts.Enabled = false; ts.Notification.WaitOne(); }
static void HandleFinishedTask(object sender, ActionArgs e) { Tasks tasks = new Tasks(); tasks.Load(); Task task = tasks.CurrentTask(); tasks.SetCurrentTaskFinished(); Notification notify = new Notification(); notify.Summary = "Task Finished"; notify.Body = task.Summary; notify.Urgency = Urgency.Critical; notify.Show(); SuggestTask(); }
public static void ShowAppNotification(Notification notification) { // TODO: Use this API for newer versions of notify-sharp //notification.AttachToStatusIcon( // Tasque.Application.Instance.trayIcon); notification.Show(); }
public void Notify(Notification note, Screen screen, int x, int y) { LibNotify.Notification notify = ToNotify(note); notify.SetGeometryHints(screen, x, y); notify.Show(); }
public static void Main(string[] args) { ThreadState ts = new ThreadState(); WaitCallback notifyMsg = state => { while (ts.Enabled) { Thread.Sleep(500); if (_msgQ.Count > 0) { NfMessage msg = (NfMessage)_msgQ.Dequeue(); #if NOTIFY Notification nf = new Notification(msg.Summary, msg.Body, msg.Icon); nf.AddHint("append", "allowed"); nf.Show(); #else Console.WriteLine("{0}: {1}", msg.Summary, msg.Body); #endif } } ts.Notification.Set(); }; ThreadPool.QueueUserWorkItem(notifyMsg); //using (WebSocket ws = new WebSocket("ws://echo.websocket.org", "echo")) //using (WebSocket ws = new WebSocket("wss://echo.websocket.org", "echo")) using (WebSocket ws = new WebSocket("ws://localhost:4649")) { ws.OnOpen += (sender, e) => { ws.Send("Hi, all!"); }; ws.OnMessage += (sender, e) => { if (!String.IsNullOrEmpty(e.Data)) { enNfMessage("[WebSocket] Message", e.Data, "notification-message-im"); } }; ws.OnError += (sender, e) => { enNfMessage("[WebSocket] Error", e.Message, "notification-message-im"); }; ws.OnClose += (sender, e) => { enNfMessage( String.Format("[WebSocket] Close({0}:{1})", (ushort)e.Code, e.Code), e.Reason, "notification-message-im"); }; ws.Connect(); Thread.Sleep(500); Console.WriteLine("\nType \"exit\" to exit.\n"); string data; while (true) { Thread.Sleep(500); Console.Write("> "); data = Console.ReadLine(); if (data == "exit") //if (data == "exit" || !ws.IsConnected) { break; } ws.Send(data); } } ts.Enabled = false; ts.Notification.WaitOne(); }
protected bool timer_Elapsed() { var recentPosts = GetRecentPosts(); try { if (recentPosts.Count != 0) { bool alreadyPlayedSound = false; foreach (var post in recentPosts) { //check if post hasn't already been notified if (!lastRecentPosts.Any(x => x.pid == post.pid) && IsCategoryEnabled(post.category.cid)) { if (cbOnlyNewTopics.Active && !post.isMainPost) { continue; } string decodedTitle = HttpUtility.HtmlDecode(post.topic.title), decodedContent = HttpUtility.HtmlDecode(RemoveHTML(post.content)); if (cbTitleContains.Active || cbBodyContains.Active) { string strToSearch = ""; if (cbTitleContains.Active) { strToSearch += decodedTitle; } if (cbBodyContains.Active) { strToSearch += decodedContent; } if (!strToSearch.Contains(textviewContains.Buffer.Text)) { continue; } } if (cbIgnoreUsers.Active && ignoredUsers.Contains(post.user.username)) { continue; } string linkToPost = "https://forums.gta5-mods.com/post/" + post.pid.ToString(); string decodedCategory = HttpUtility.HtmlDecode(post.category.name); string body; if (decodedContent.Length > 100) { body = decodedContent.Substring(0, 97) + "..."; } else { body = decodedContent; } TreeIter iter; if (treeStore.IterNChildren() == 50) { //remove oldest item treeStore.IterNthChild(out iter, 49); treeStore.Remove(ref iter); } iter = treeStore.InsertWithValues(0, decodedCategory, decodedTitle, body, linkToPost); tvNotifications.Selection.SelectIter(iter); tvNotifications.ScrollToCell(treeStore.GetPath(iter), columnCategory, true, 0f, 0f); if (!alreadyPlayedSound) { alreadyPlayedSound = true; if (cbPlayNotificationSound.Active) { SystemSounds.Beep.Play(); Thread.Sleep(150); SystemSounds.Beep.Play(); } } int platform = (int)Environment.OSVersion.Platform; if (platform == 4 || platform == 128) //Unix { var notify = new Notifications.Notification(decodedTitle, body, Gdk.Pixbuf.LoadFromResource("GTA5MFNotifier.Resources.icon.png")); notify.Timeout = 5000; notify.AddAction("click", "View in browser", (object o, ActionArgs args) => { Process.Start(linkToPost); }); notify.Show(); } else if (platform != 6) //Windows (6 == MacOS) { var notification = new GTA5MFNotifier.Notification(linkToPost, decodedTitle, body, 10, FormAnimator.AnimationMethod.Slide, FormAnimator.AnimationDirection.Left); notification.Show(); } } } } } catch (Exception ex) { throw ex; } finally { lastRecentPosts = recentPosts; } return(true); }
public override void DesktopNotify(ActivityFeedItemTemplate template, IActivityFeedItem item, string text) { // FIXME: This will need to be different on windows/osx... QApplication.Invoke(delegate { Notification notif = new Notification(text, item.Content); foreach (var action in template.Actions) { notif.AddAction(action.Name, action.Label, delegate { item.TriggerAction(action.Name); }); } notif.Show (); }); }
void ShowNotification(ChatView chatView, MessageModel msg) { Notification notification; if (!Capabilites.Contains("append") && Notifications.TryGetValue(chatView, out notification)) { // no support for append, update the existing notification notification.Body = GLib.Markup.EscapeText( msg.ToString() ); return; } notification = new Notification() { Summary = chatView.Name, Category = "im.received" }; if (Capabilites.Contains("body")) { // notify-osd doesn't like unknown tags when appending notification.Body = GLib.Markup.EscapeText( msg.ToString() ); } //notification.IconName = "notification-message-im"; if (Capabilites.Contains("icon-static")) { if (chatView is PersonChatView) { notification.Icon = PersonChatIconPixbuf; } if (chatView is GroupChatView) { notification.Icon = GroupChatIconPixbuf; } } if (Capabilites.Contains("actions")) { notification.AddAction("show", _("Show"), delegate { try { MainWindow.PresentWithServerTime(); MainWindow.Notebook.CurrentChatView = chatView; notification.Close(); } catch (Exception ex) { #if LOG4NET Logger.Error("OnChatViewMessageHighlighted() " + "notification.Show threw exception", ex); #endif } }); } if (Capabilites.Contains("append")) { notification.AddHint("append", String.Empty); } if (Capabilites.Contains("sound")) { // DNS 0.9 only supports sound-file which is a file path // http://www.galago-project.org/specs/notification/0.9/x344.html // DNS 1.1 supports sound-name which is an id, see: // http://people.canonical.com/~agateau/notifications-1.1/spec/ar01s08.html // http://0pointer.de/public/sound-naming-spec.html // LAMESPEC: We can't tell which of those are actually // supported by this version as hint are totally optional :/ // HACK: always pass both hints when possible notification.AddHint("sound-name", "message-new-instant"); if (SoundFile != null) { notification.AddHint("sound-file", SoundFile); } } notification.Closed += delegate { try { #if LOG4NET Logger.Debug("OnChatViewMessageHighlighted(): received " + "notification.Closed signal for: " + chatView.Name); #endif Notifications.Remove(chatView); } catch (Exception ex) { #if LOG4NET Logger.Error("OnChatViewMessageHighlighted(): " + "Exception in notification.Closed handler", ex); #endif } }; notification.Show(); if (!Notifications.ContainsKey(chatView)) { Notifications.Add(chatView, notification); } }
private void configure() { #if DEBUG _ws.Log.Level = LogLevel.TRACE; #endif _ws.OnOpen += (sender, e) => { var msg = createTextMessage("connection", String.Empty); _ws.Send(msg); }; _ws.OnMessage += (sender, e) => { switch (e.Type) { case Opcode.TEXT: var msg = parseTextMessage(e.Data); _msgQ.Enqueue(msg); break; case Opcode.BINARY: var audioMsg = parseAudioMessage(e.RawData); if (audioMsg.user_id == _user_id) goto default; if (_audioBox.ContainsKey(audioMsg.user_id)) { _audioBox[audioMsg.user_id].Enqueue(audioMsg.buffer_array); } else { var q = Queue.Synchronized(new Queue()); q.Enqueue(audioMsg.buffer_array); _audioBox.Add(audioMsg.user_id, q); } break; default: break; } }; _ws.OnError += (sender, e) => { enNfMessage("[AudioStreamer] error", "WS: Error: " + e.Message, "notification-message-im"); }; _ws.OnClose += (sender, e) => { enNfMessage ( "[AudioStreamer] disconnect", String.Format("WS: Close({0}: {1})", e.Code, e.Reason), "notification-message-im" ); }; //_ws.Compression = CompressionMethod.DEFLATE; _notifyMsgState = new ThreadState(); _notifyMsg = (state) => { while (_notifyMsgState.Enabled || _msgQ.Count > 0) { Thread.Sleep(500); if (_msgQ.Count > 0) { NfMessage msg = (NfMessage)_msgQ.Dequeue(); #if NOTIFY Notification nf = new Notification(msg.Summary, msg.Body, msg.Icon); nf.AddHint("append", "allowed"); nf.Show(); #else Console.WriteLine("{0}: {1}", msg.Summary, msg.Body); #endif } } _notifyMsgState.Notification.Set(); }; _sendHeartbeat = (state) => { var msg = createTextMessage("heartbeat", String.Empty); _ws.Send(msg); }; }
public void ShowAppNotification(string summary, string body) { var notification = new Notification ( summary, body, Utilities.GetIcon ("tasque", 48)); // TODO: Use this API for newer versions of notify-sharp //notification.AttachToStatusIcon ( // Tasque.Application.Instance.trayIcon); notification.Show (); }
private void UpdateMeterErrorEventHandler(string message) { Log.Info("Showing error notification: {0}", message); m_statusIcon.Pixbuf = GetIcon(9); m_statusIcon.Tooltip = message; Notification notification = new Notification { IconName = Stock.DialogError, Summary = "Er is een fout opgetreden bij het updaten van de Telemeter status.", Body = message, Urgency = Urgency.Critical }; notification.Show(); }
public override void ShowMessage (string title, string message, Gdk.Pixbuf icon) { Notification notification = new Notification(title, message, icon); notification.Show (); }
void ShowNotification(ChatView chatView, MessageModel msg) { Notification notification; if (!Capabilites.Contains("append") && Notifications.TryGetValue(chatView, out notification)) { // no support for append, update the existing notification notification.Body = GLib.Markup.EscapeText( msg.ToString() ); return; } notification = new Notification() { Summary = chatView.Name, Category = "im.received" }; notification.AddHint("desktop-entry", "smuxi-frontend-gnome"); if (Capabilites.Contains("body")) { // notify-osd doesn't like unknown tags when appending notification.Body = GLib.Markup.EscapeText( msg.ToString() ); } if (Capabilites.Contains("icon-static")) { Gdk.Pixbuf iconData = null; string iconName = null; if (chatView is PersonChatView) { iconData = PersonChatIconPixbuf; iconName = "smuxi-person-chat"; } else if (chatView is GroupChatView) { iconData = GroupChatIconPixbuf; iconName = "smuxi-group-chat"; } var theme = Gtk.IconTheme.Default; #if DISABLED // OPT: use icon path/name if we can, so the image (26K) is not // send over D-Bus. Especially with the gnome-shell this is a // serious performance issue, see: // https://bugzilla.gnome.org/show_bug.cgi?id=683829 if (iconName != null && theme.HasIcon(iconName)) { // HACK: use icon path instead of name as gnome-shell does // not support icon names correctly, see: // https://bugzilla.gnome.org/show_bug.cgi?id=665957 var iconInfo = theme.LookupIcon(iconName, 256, Gtk.IconLookupFlags.UseBuiltin); if (!String.IsNullOrEmpty(iconInfo.Filename) && File.Exists(iconInfo.Filename) && ServerVendor == "GNOME" && (ServerName == "Notification Daemon" || ServerName == "gnome-shell")) { // HACK: notification-daemon 0.7.5 seems to ignore // the image_path hint for some reason, thus we have to // rely on app_icon instead, see: // https://bugzilla.gnome.org/show_bug.cgi?id=684653 // HACK: gnome-shell 3.4.2 shows no notification at all // with image_path and stops responding to further // notifications which freezes Smuxi completely! notification.IconName = "file://" + iconInfo.Filename; } else if (!String.IsNullOrEmpty(iconInfo.Filename) && File.Exists(iconInfo.Filename) && SpecificationVersion >= new Version("1.1")) { // starting with DNS >= 1.1 we can use the image-path // hint instead of icon_data or app_icon var hintName = "image_path"; if (SpecificationVersion >= new Version("1.2")) { hintName = "image-path"; } notification.AddHint(hintName, "file://" + iconInfo.Filename); } else { // fallback to icon_data as defined in DNS 0.9 notification.Icon = iconData; } #endif if (Frontend.HasSystemIconTheme && iconName != null && theme.HasIcon(iconName)) { notification.IconName = iconName; } else if (iconName != null && theme.HasIcon(iconName)) { // icon wasn't in the system icon theme var iconInfo = theme.LookupIcon(iconName, 256, Gtk.IconLookupFlags.UseBuiltin); if (!String.IsNullOrEmpty(iconInfo.Filename) && File.Exists(iconInfo.Filename)) { notification.IconName = "file://" + iconInfo.Filename; } } else if (iconData != null) { // fallback to icon_data as the icon is not available in // the theme notification.Icon = iconData; } else { // fallback for non-group/person messages notification.IconName = "notification-message-im"; } } else { // fallback to generic icon notification.IconName = "notification-message-im"; } if (Capabilites.Contains("actions")) { notification.AddAction("show", _("Show"), delegate { try { MainWindow.PresentWithServerTime(); ChatViewManager.CurrentChatView = chatView; notification.Close(); } catch (Exception ex) { #if LOG4NET Logger.Error("OnChatViewMessageHighlighted() " + "notification.Show threw exception", ex); #endif } }); } if (Capabilites.Contains("append")) { notification.AddHint("append", String.Empty); } if (Capabilites.Contains("sound")) { // DNS 0.9 only supports sound-file which is a file path // http://www.galago-project.org/specs/notification/0.9/x344.html // DNS 1.1 supports sound-name which is an id, see: // http://people.canonical.com/~agateau/notifications-1.1/spec/ar01s08.html // http://0pointer.de/public/sound-naming-spec.html // LAMESPEC: We can't tell which of those are actually // supported by this version as hint are totally optional :/ // HACK: always pass both hints when possible notification.AddHint("sound-name", "message-new-instant"); if (SoundFile != null) { notification.AddHint("sound-file", SoundFile); } } notification.Closed += delegate { try { #if LOG4NET Logger.Debug("OnChatViewMessageHighlighted(): received " + "notification.Closed signal for: " + chatView.Name); #endif Notifications.Remove(chatView); } catch (Exception ex) { #if LOG4NET Logger.Error("OnChatViewMessageHighlighted(): " + "Exception in notification.Closed handler", ex); #endif } }; notification.Show(); if (!Notifications.ContainsKey(chatView)) { Notifications.Add(chatView, notification); } } void OnMainWindowFocusInEvent(object sender, Gtk.FocusInEventArgs e) { Trace.Call(sender, e); if (MainWindow.Notebook.IsBrowseModeEnabled) { return; } var currentChatView = ChatViewManager.CurrentChatView; if (currentChatView == null) { return; } DisposeNotification(currentChatView); } void OnMainWindowNotebookSwitchPage(object sender, Gtk.SwitchPageArgs e) { Trace.Call(sender, e); if (MainWindow.Notebook.IsBrowseModeEnabled) { return; } var currentChatView = ChatViewManager.CurrentChatView; if (currentChatView == null) { return; } DisposeNotification(currentChatView); } void DisposeNotification(ChatView chatView) { Notification notification; if (!Notifications.TryGetValue(chatView, out notification)) { return; } #if LOG4NET Logger.Debug("DisposeNotification(): disposing notification for: " + chatView.Name); #endif try { // don't try to close already closed notifications (timeout) if (notification.Id == 0) { #if LOG4NET Logger.Debug("DisposeNotification(): notification already " + "closed for: " + chatView.Name); #endif return; } notification.Close(); } catch (Exception ex) { #if LOG4NET Logger.Error("DisposeNotification(): " + "notification.Close() thew exception", ex); #endif } finally { Notifications.Remove(chatView); } }
private void UpdateMeterStatusEventHandler(StageType stageType) { Log.Info("Showing status notification."); int stageNumber = Convert.ToInt32(stageType.StageNumber); m_statusIcon.Pixbuf = GetIcon(stageNumber); m_statusIcon.Tooltip = stageType.Description; Notification notification = new Notification { Icon = GetIcon(stageNumber), Summary = string.Format("{0}/9", stageNumber), Body = stageType.Description, Urgency = Urgency.Normal }; notification.Show(); }
private void CloseWindow(object o, EventArgs args) { try { if (NotifyOnCloseSchema.Get ()) { Gdk.Pixbuf image = IconThemeUtils.LoadIcon (48, Banshee.ServiceStack.Application.IconName); Notification nf = new Notification ( Catalog.GetString ("Still Running"), Catalog.GetString ("Banshee was closed to the notification area. " + "Use the <i>Quit</i> option to end your session."), image, notif_area.Widget); nf.Urgency = Urgency.Low; nf.Timeout = 4500; nf.Show (); NotifyOnCloseSchema.Set (false); } } catch { } elements_service.PrimaryWindow.SetVisible (false); }
private void CloseWindow (object o, EventArgs args) { try { if (NotifyOnCloseSchema.Get ()) { Notification nf = new Notification ( AddinManager.CurrentLocalizer.GetString ("Still Running"), AddinManager.CurrentLocalizer.GetString ( "Banshee was closed to the notification area. " + "Use the <i>Quit</i> option to end your session."), "media-player-banshee"); nf.Urgency = Urgency.Low; nf.Show (); NotifyOnCloseSchema.Set (false); } } catch (Exception e) { Hyena.Log.Warning ("Error while trying to notify of window close.", e.Message, false); } PrimaryWindowVisible = false; }