pcremote-client-n8x0 -> client sources
[remotepc] / pcremote-server-desktop / pcremote-server.py
1 #!/usr/bin/env python
2
3 from runserver import Server
4 import gtk
5 import thread
6 import sys
7
8 class Service:
9
10     def start_server(self, widget):
11
12         if self.connected == False:    
13             imagepath = self.images.replace('pcremote-server.py','images/PCR_on.bmp')
14             self.staticon.set_from_file(imagepath)
15             self.staticon.set_tooltip("PC Remote Server - Online")
16
17             img = gtk.Image()
18             img.set_from_stock(gtk.STOCK_DISCONNECT, gtk.ICON_SIZE_MENU)
19             self.menuItemCon.set_image(img)
20
21             self.srv = Server("PC Remote")
22             thread.start_new_thread(Server.start,(self.srv,"server"))
23
24         else:           
25             imagepath = self.images.replace('pcremote-server.py','images/PCR_off.bmp')
26             self.staticon.set_from_file(imagepath)
27             self.staticon.set_tooltip("PC Remote Server - Offline")
28
29             img = gtk.Image()
30             img.set_from_stock(gtk.STOCK_EXECUTE, gtk.ICON_SIZE_MENU)
31
32             self.menuItemCon.set_image(img)
33
34             thread.exit_thread()
35
36         self.connected = not self.connected
37
38     def  destroyer(self, widget,response_id, data= None):
39         if response_id == gtk.RESPONSE_OK:
40             gtk.main_quit()
41         else:
42             widget.hide()
43
44     def popup(self, widget):
45         dialog = gtk.MessageDialog(
46         parent         = None,
47         flags          = gtk.DIALOG_DESTROY_WITH_PARENT,
48         type           = gtk.MESSAGE_INFO,
49         buttons        = gtk.BUTTONS_OK_CANCEL,
50         message_format = "Do you want to shut down the server?")
51         dialog.set_title('PC Remote Server')
52         dialog.connect('response', self.destroyer)
53         dialog.show()
54      
55     def popup_menu_cb(self, widget, button, time, data = None):
56         if button == 3:
57             if data:
58                 data.show_all()
59                 data.popup(None, None, None, 3, time)
60        
61
62     def __init__(self):
63
64         self.images = sys.argv[0]
65         self.connected = False
66
67         self.staticon = gtk.StatusIcon()
68         imagepath = self.images.replace('pcremote-server.py','images/PCR_off.bmp')
69         self.staticon.set_from_file(imagepath)
70         self.staticon.set_tooltip("PC Remote Server(offline)")
71
72         self.menu = gtk.Menu()
73
74         self.menuItemCon = gtk.ImageMenuItem(gtk.STOCK_EXECUTE)
75         self.menuItemCon.connect('activate', self.start_server)
76
77         self.menuItemExit = gtk.ImageMenuItem(gtk.STOCK_QUIT)
78         self.menuItemExit.connect('activate', self.popup)
79
80         self.menu.append(self.menuItemCon)
81         self.menu.append(self.menuItemExit)
82
83         self.staticon.connect('popup-menu', self.popup_menu_cb, self.menu)
84
85         self.staticon.set_visible(True)
86
87         gtk.gdk.threads_init()
88         gtk.gdk.threads_enter()
89
90         gtk.main()
91
92         gtk.gdk.threads_leave()
93
94 print sys.argv
95 Srv = Service()