move drlaunch in drlaunch
[drlaunch] / drlaunch / src / apps.py
diff --git a/drlaunch/src/apps.py b/drlaunch/src/apps.py
new file mode 100755 (executable)
index 0000000..1a7336f
--- /dev/null
@@ -0,0 +1,146 @@
+#!/usr/bin/env python
+# coding=UTF-8
+# 
+# Copyright (C) 2010 Stefanos Harhalakis
+#
+# This file is part of wifieye.
+#
+# wifieye is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# wifieye is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with wifieye.  If not, see <http://www.gnu.org/licenses/>.
+#
+# $Id: 0.py 2265 2010-02-21 19:16:26Z v13 $
+
+__version__ = "$Id: 0.py 2265 2010-02-21 19:16:26Z v13 $"
+
+import os
+
+from gettext import translation
+#import locale
+
+#from xdg.IconTheme import getIconPath
+
+appdir="/usr/share/applications/hildon"
+
+apps={}
+
+def readOneFn(fn):
+    global appdir
+
+    ret={
+       'id':       fn[:-8],
+       'name':     None,
+       'exec':     None,
+       'icon':     None,
+       'iconpath': None,
+       'domain':   None,
+       'type':     None,
+       }
+
+    fn2=appdir + '/' + fn
+
+    try:
+       f=open(fn2, 'rt')
+    except:
+       return(None)
+
+    inde=False
+    for line in f:
+       line=line.strip()
+       if line=='[Desktop Entry]':
+           inde=True
+           continue
+
+       if inde==False:
+           continue
+
+       # Reached another block
+       if line.startswith('[') and inde:
+           break
+
+       elif line.startswith('Name='):
+           l=line[5:]
+           ret['name']=l
+       elif line.startswith('Exec='):
+           l=line[5:]
+           ret['exec']=l
+       elif line.startswith('Icon='):
+           l=line[5:]
+           ret['icon']=l
+           # ret['iconpath']=getIconPath(l)
+       elif line.startswith('X-Text-Domain='):
+           l=line[14:]
+           ret['domain']=l
+       elif line.startswith('Type='):
+           l=line[5:]
+           ret['type']=l
+
+    if ret['domain']!=None:
+       try:
+           c=translation(ret['domain'])
+       except IOError, e:
+           c=None
+
+       if c!=None:
+           ret['name0']=ret['name']
+           ret['name']=c.gettext(ret['name0'])
+
+    if ret['name']==None:
+       ret['name']=ret['id']
+
+    return(ret)
+
+def readOne(name):
+    fn=name + ".desktop"
+
+    ret=readOneFn(fn)
+
+    return(ret)
+
+def scan():
+    global appdir, apps
+
+    files=os.listdir(appdir)
+
+    ret={}
+
+    for f in files:
+       if not f.endswith('.desktop'):
+           continue
+       if f.startswith('catorise-'):
+           continue
+
+       dt=readOneFn(f)
+
+       if dt==None:
+           continue
+       if dt['type']=='Daemon' or dt['type']=='daemon':
+           continue
+
+       t=f[:-8]
+       ret[t]=dt
+
+    apps=ret
+
+    return(ret)
+
+def getLastScan():
+    global apps
+
+    return(apps)
+
+if __name__=="__main__":
+    #locale.setlocale(locale.LC_ALL, '')
+    print scan()
+
+# vim: set ts=8 sts=4 sw=4 noet formatoptions=r ai nocindent:
+