Repository URL to install this package:
|
Version:
15.1.0-1 ▾
|
# (c) Copyright 2009-2012. CodeWeavers, Inc.
import cxmenu
class Launcher(object):
can_launch = False
can_move = False
can_rename = False
can_delete = False
can_add_shortcut = False
description = ''
id = ''
bottle = None
children = ()
parent = None
path = None
expanded = True
menuitem = None
class MenuFolder(Launcher):
def __init__(self):
Launcher.__init__(self)
self.children = []
class MenuLauncher(Launcher):
def start(self):
if self.menuitem is not None:
self.menuitem.start()
class BottleTreeView(object):
def get_items(self, bottlename):
if bottlename is None:
return
result = []
menu_folder_objects = {}
# enumerate menus
menuprefs = cxmenu.MenuPrefs(bottlename, False)
menuprefs.fast_refresh()
for menu in menuprefs:
menuitem = menuprefs[menu]
path = menuitem.path
splitpath = path.split('/')
if path.startswith('StartMenu'):
# FIXME: Localize, or better yet use the bottle's menuroot configuration
splitpath[0] = "Start Menu"
elif path.startswith('Desktop'):
# FIXME: Localize
splitpath[0] = "Desktop"
for i in range(0, len(splitpath)-1):
folder_name = '/'.join(splitpath[0:i+1])
if folder_name not in menu_folder_objects:
menufolder = MenuFolder()
menufolder.description = splitpath[i]
menufolder.id = folder_name
if i != 0:
menufolder.parent = menu_folder_objects['/'.join(splitpath[0:i])]
menufolder.parent.children.append(menufolder)
else:
result.append(menufolder)
menu_folder_objects[menufolder.id] = menufolder
item = MenuLauncher()
item.description = splitpath[-1]
item.description = item.description.replace(".lnk", "")
item.menuitem = menuitem
item.id = menu
item.parent = menu_folder_objects['/'.join(splitpath[0:-1])]
item.bottle = bottlename
item.path = menuitem.full_path
menu_folder_objects['/'.join(splitpath[0:-1])].children.append(item)
return result