pcremote-client-n8x0 -> client sources
[remotepc] / pcremote-server-desktop-60 / pcremote-server.py
diff --git a/pcremote-server-desktop-60/pcremote-server.py b/pcremote-server-desktop-60/pcremote-server.py
new file mode 100755 (executable)
index 0000000..195af3e
--- /dev/null
@@ -0,0 +1,95 @@
+#!/usr/bin/env python
+
+from runserver import Server
+import gtk
+import thread
+import sys
+
+class Service:
+
+    def start_server(self, widget):
+
+        if self.connected == False:    
+            imagepath = self.images.replace('pcremote-server.py','images/PCR_on.bmp')
+            self.staticon.set_from_file(imagepath)
+            self.staticon.set_tooltip("PC Remote Server - Online")
+
+            img = gtk.Image()
+            img.set_from_stock(gtk.STOCK_DISCONNECT, gtk.ICON_SIZE_MENU)
+            self.menuItemCon.set_image(img)
+
+            self.srv = Server("PC Remote")
+            thread.start_new_thread(Server.start,(self.srv,"server"))
+
+        else:          
+            imagepath = self.images.replace('pcremote-server.py','images/PCR_off.bmp')
+            self.staticon.set_from_file(imagepath)
+            self.staticon.set_tooltip("PC Remote Server - Offline")
+
+            img = gtk.Image()
+            img.set_from_stock(gtk.STOCK_EXECUTE, gtk.ICON_SIZE_MENU)
+
+            self.menuItemCon.set_image(img)
+
+            thread.exit_thread()
+
+        self.connected = not self.connected
+
+    def  destroyer(self, widget,response_id, data= None):
+        if response_id == gtk.RESPONSE_OK:
+            gtk.main_quit()
+        else:
+            widget.hide()
+
+    def popup(self, widget):
+        dialog = gtk.MessageDialog(
+        parent         = None,
+        flags          = gtk.DIALOG_DESTROY_WITH_PARENT,
+        type           = gtk.MESSAGE_INFO,
+        buttons        = gtk.BUTTONS_OK_CANCEL,
+        message_format = "Do you want to shut down the server?")
+        dialog.set_title('PC Remote Server')
+        dialog.connect('response', self.destroyer)
+        dialog.show()
+     
+    def popup_menu_cb(self, widget, button, time, data = None):
+        if button == 3:
+            if data:
+                data.show_all()
+                data.popup(None, None, None, 3, time)
+       
+
+    def __init__(self):
+
+        self.images = sys.argv[0]
+        self.connected = False
+
+        self.staticon = gtk.StatusIcon()
+        imagepath = self.images.replace('pcremote-server.py','images/PCR_off.bmp')
+        self.staticon.set_from_file(imagepath)
+        self.staticon.set_tooltip("PC Remote Server(offline)")
+
+        self.menu = gtk.Menu()
+
+        self.menuItemCon = gtk.ImageMenuItem(gtk.STOCK_EXECUTE)
+        self.menuItemCon.connect('activate', self.start_server)
+
+        self.menuItemExit = gtk.ImageMenuItem(gtk.STOCK_QUIT)
+        self.menuItemExit.connect('activate', self.popup)
+
+        self.menu.append(self.menuItemCon)
+        self.menu.append(self.menuItemExit)
+
+        self.staticon.connect('popup-menu', self.popup_menu_cb, self.menu)
+
+        self.staticon.set_visible(True)
+
+        gtk.gdk.threads_init()
+        gtk.gdk.threads_enter()
+
+        gtk.main()
+
+        gtk.gdk.threads_leave()
+
+print sys.argv
+Srv = Service()