src/extras/fileserver/fsgui.py
changeset 0 ca70ae20a155
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/extras/fileserver/fsgui.py	Tue Feb 16 10:07:05 2010 +0530
@@ -0,0 +1,82 @@
+# fsgui.py
+#
+# A launcher script for the simple file transfer server
+# for Series 60 Python environment.
+#     
+# Copyright (c) 2005 Nokia Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+import appuifw
+import socket
+import os
+import e32
+
+CONFIG_DIR='c:/system/apps/python'
+
+def discover_address(configfile):
+    import appuifw
+    CONFIG_FILE=os.path.join(CONFIG_DIR,configfile)
+    try:        
+        f=open(CONFIG_FILE,'r')
+        config=eval(f.read())
+        f.close()
+    except:
+        config={}
+
+    address=config.get('target','')
+
+    if address:
+        choice=appuifw.popup_menu([u'Default host',
+                                   u'Other...'],u'Connect to:')
+        if choice==1:
+            address=None
+        if choice==None:
+            return None # popup menu was cancelled.    
+    if not address:
+        print "Discovering..."
+        addr,services=socket.bt_discover()
+        print "Discovered: %s, %s"%(addr,services)
+        if len(services)>1:
+            choices=services.keys()
+            choices.sort()
+            choice=appuifw.popup_menu([unicode(services[x])+": "+x
+                                       for x in choices],u'Choose port:')
+            port=services[choices[choice]]
+        else:
+            port=services[services.keys()[0]]
+        address=(addr,port)
+        config['target']=address
+        # make sure the configuration file exists.
+        if not os.path.isdir(CONFIG_DIR):
+            os.makedirs(CONFIG_DIR)
+        f=open(CONFIG_FILE,'wt')
+        f.write(repr(config))
+        f.close()
+    return address
+
+def startserver():
+    if os.path.isfile(u'e:\\system\\libs\\fileserver.py'):
+        server_script=u'e:\\system\\libs\\fileserver.py'
+    elif os.path.isfile(u'c:\\system\\libs\\fileserver.py'):
+        server_script=u'c:\\system\\libs\\fileserver.py'
+    else:
+        appuifw.note(u'fileserver.py not found','error')
+        return
+    addr=discover_address('fileserver_conf.txt')
+    if addr:
+        e32.start_server(server_script)
+    appuifw.note(u'File server started','info')
+
+startserver()