summaryrefslogtreecommitdiff
path: root/news/xpn/files/patch-xpn.py
blob: b366a3f844906d9f6ce0599b0ef0e35c34fab4aa (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
From: David Paleino <dapal@debian.org>
Subject: implement a trayicon, with a context menu, and blinking on new
 posts.

--- xpn.py.orig	2018-11-16 09:23:53 UTC
+++ xpn.py
@@ -329,7 +329,6 @@ class MainWin:
         self.win_outbox=Outbox_Manager(self,VERSION)
         self.win_outbox.show()
 
-            
     def open_edit_win(self,object,is_followup=False):
         group=""
         id_name=""
@@ -396,7 +395,6 @@ class MainWin:
             self.win4=Edit_Win(self.configs,group,None,None,self.subscribed_groups,server_name=self.current_server,id_name=id_name)
             #self.win4.show()
 
-
     def open_edit_mail_win(self,object):
         to_name=""
         id_name=""
@@ -579,6 +577,31 @@ class MainWin:
         except: pass
         gtk.main_quit()
 
+    def tray_activated(self,  widget):
+        if self.window.get_property("is-active"):
+            self.window.iconify()
+            self.window.hide()
+        else:
+            self.window.present()
+            self.window.deiconify()
+            widget.set_blinking(False)
+
+    def tray_popuped(self,  widget,  button,  timestamp):
+        menu = gtk.Menu()
+        menuitem = gtk.ImageMenuItem(gtk.STOCK_PREFERENCES)
+        menuitem.connect("activate",  self.open_configure_win)
+        menu.append(menuitem)
+        menu.append(gtk.SeparatorMenuItem())
+        menuitem = gtk.ImageMenuItem(gtk.STOCK_ABOUT)
+        menuitem.connect('activate', self.open_about_dialog)
+        menu.append(menuitem)
+        menuitem = gtk.ImageMenuItem(gtk.STOCK_QUIT)
+        menuitem.connect('activate', self.destroy)
+        menu.append(menuitem)
+
+        menu.show_all()
+        menu.popup(None,  None,  None,  button,  timestamp)
+
     def save_sorting_type(self,obj=None):
         for n in range(1,5):
             col=self.threads_pane.threads_tree.get_column(n)
@@ -592,9 +615,7 @@ class MainWin:
                 self.configs["ascend_order"]=ascend_order
                 self.configs["sort_col"]=col_name
                 self.conf.write_configs()
-         
-                
-    
+
     def show_subscribed(self):
         model,path_list,iter_list=self.groups_pane.get_selected_rows()
         
@@ -1588,6 +1609,8 @@ class MainWin:
         self.statusbar.push(1,message)
         if total_headers:
             self.progressbar.set_text(_("Building Articles"))
+            if not self.window.get_property("is-active"):
+                self.trayicon.set_blinking(True)
         else:
             self.progressbar.set_text(_("No New Headers"))
         self.progressbar.set_fraction(2/float(2))
@@ -2600,8 +2623,6 @@ When you try to import a newsrc file XPN searches for 
                         article.has_body=False
                     self.art_db.insertArticle(group[0],article)
 
-
-
     def __init__(self,use_home,custom_dir):
         Edit_Win.VERSION=VERSION
         Edit_Mail_Win.VERSION=VERSION
@@ -2615,6 +2636,13 @@ When you try to import a newsrc file XPN searches for 
         if ret>0 :sys.exit(ret)
         self.wdir=userdir.dir
         
+        # handle the trayicon
+        self.trayicon = gtk.StatusIcon()
+        self.trayicon.set_tooltip_text(_("XPN Newsreader"))
+        self.trayicon.set_from_file("pixmaps/xpn-icon.png")
+        self.trayicon.connect("activate",  self.tray_activated)
+        self.trayicon.connect("popup-menu",  self.tray_popuped)
+
         self.conf=Config_File()
         self.configs=self.conf.get_configs()