Added new getUserItemPath function

Renamed "Edit" to "Prop" throughout to indicate Properties of the menu item

Added code in to copy the .desktop file in the /usr directory structure to the user's local directory before editing properties

Updated menuPopup function to include the new functionality as well
This commit is contained in:
Icius 2010-01-22 12:43:21 -05:00
parent 5f419d81f7
commit 18a491a38c

View File

@ -73,6 +73,20 @@ gettext.install("mintmenu", "/usr/share/linuxmint/locale")
# #
#xdg.Menu.parse = xdgParsePatched #xdg.Menu.parse = xdgParsePatched
# Helper function for retrieving the user's location for storing new or modified menu items
def getUserItemPath():
item_dir = None
if os.environ.has_key('XDG_DATA_HOME'):
item_dir = os.path.join(os.environ['XDG_DATA_HOME'], 'applications')
else:
item_dir = os.path.join(os.environ['HOME'], '.local', 'share', 'applications')
if not os.path.isdir(item_dir):
os.makedirs(item_dir)
return item_dir
class Menu: class Menu:
def __init__( self, MenuToLookup ): def __init__( self, MenuToLookup ):
self.tree = gmenu.lookup_tree( MenuToLookup ) self.tree = gmenu.lookup_tree( MenuToLookup )
@ -633,7 +647,7 @@ class pluginclass( object ):
mTree = gtk.glade.XML( self.gladefile, "favoritesMenu" ) mTree = gtk.glade.XML( self.gladefile, "favoritesMenu" )
#i18n #i18n
launchMenuItem = gtk.MenuItem(_("Launch")) launchMenuItem = gtk.MenuItem(_("Launch"))
editMenuItem = gtk.MenuItem(_("Edit")) propsMenuItem = gtk.MenuItem(_("Properties"))
removeFromFavMenuItem = gtk.MenuItem(_("Remove from favorites")) removeFromFavMenuItem = gtk.MenuItem(_("Remove from favorites"))
startupMenuItem = gtk.CheckMenuItem(_("Launch when I log in")) startupMenuItem = gtk.CheckMenuItem(_("Launch when I log in"))
separator = gtk.SeparatorMenuItem() separator = gtk.SeparatorMenuItem()
@ -642,13 +656,13 @@ class pluginclass( object ):
launchMenuItem.connect( "activate", self.onLaunchApp, widget) launchMenuItem.connect( "activate", self.onLaunchApp, widget)
editMenuItem.connect( "activate", self.onEditApp, widget) propsMenuItem.connect( "activate", self.onPropsApp, widget)
removeFromFavMenuItem.connect( "activate", self.onFavoritesRemove, widget ) removeFromFavMenuItem.connect( "activate", self.onFavoritesRemove, widget )
insertSpaceMenuItem.connect( "activate", self.onFavoritesInsertSpace, widget, insertBefore ) insertSpaceMenuItem.connect( "activate", self.onFavoritesInsertSpace, widget, insertBefore )
insertSeparatorMenuItem.connect( "activate", self.onFavoritesInsertSeparator, widget, insertBefore ) insertSeparatorMenuItem.connect( "activate", self.onFavoritesInsertSeparator, widget, insertBefore )
mTree.get_widget("favoritesMenu").append(launchMenuItem) mTree.get_widget("favoritesMenu").append(launchMenuItem)
mTree.get_widget("favoritesMenu").append(editMenuItem) mTree.get_widget("favoritesMenu").append(propsMenuItem)
mTree.get_widget("favoritesMenu").append(removeFromFavMenuItem) mTree.get_widget("favoritesMenu").append(removeFromFavMenuItem)
mTree.get_widget("favoritesMenu").append(startupMenuItem) mTree.get_widget("favoritesMenu").append(startupMenuItem)
mTree.get_widget("favoritesMenu").append(separator) mTree.get_widget("favoritesMenu").append(separator)
@ -687,11 +701,13 @@ class pluginclass( object ):
#i18n #i18n
launchMenuItem = gtk.MenuItem(_("Launch")) launchMenuItem = gtk.MenuItem(_("Launch"))
propsMenuItem = gtk.MenuItem(_("Properties"))
favoriteMenuItem = gtk.CheckMenuItem(_("Show in my favorites")) favoriteMenuItem = gtk.CheckMenuItem(_("Show in my favorites"))
startupMenuItem = gtk.CheckMenuItem(_("Launch when I log in")) startupMenuItem = gtk.CheckMenuItem(_("Launch when I log in"))
separator = gtk.SeparatorMenuItem() separator = gtk.SeparatorMenuItem()
uninstallMenuItem = gtk.MenuItem(_("Uninstall")) uninstallMenuItem = gtk.MenuItem(_("Uninstall"))
mTree.get_widget("applicationsMenu").append(launchMenuItem) mTree.get_widget("applicationsMenu").append(launchMenuItem)
mTree.get_widget("applicationsMenu").append(propsMenuItem)
mTree.get_widget("applicationsMenu").append(favoriteMenuItem) mTree.get_widget("applicationsMenu").append(favoriteMenuItem)
mTree.get_widget("applicationsMenu").append(startupMenuItem) mTree.get_widget("applicationsMenu").append(startupMenuItem)
mTree.get_widget("applicationsMenu").append(separator) mTree.get_widget("applicationsMenu").append(separator)
@ -699,6 +715,7 @@ class pluginclass( object ):
mTree.get_widget("applicationsMenu").show_all() mTree.get_widget("applicationsMenu").show_all()
launchMenuItem.connect( "activate", self.onLaunchApp, widget ) launchMenuItem.connect( "activate", self.onLaunchApp, widget )
propsMenuItem.connect( "activate", self.onPropsApp, widget)
uninstallMenuItem.connect ( "activate", self.onUninstallApp, widget ) uninstallMenuItem.connect ( "activate", self.onUninstallApp, widget )
if self.isLocationInFavorites( widget.desktopFile ): if self.isLocationInFavorites( widget.desktopFile ):
@ -721,11 +738,19 @@ class pluginclass( object ):
widget.execute() widget.execute()
self.mintMenuWin.hide() self.mintMenuWin.hide()
def onEditApp( self, menu, widget ): def onPropsApp( self, menu, widget ):
# print u"Location of favorite is: " + widget.desktopFile
os.system('gnome-desktop-item-edit ' + widget.desktopFile) # Building a path to the .desktop file in the user's home directory
file_path = os.path.join(getUserItemPath(), os.path.basename(widget.desktopFile))
if not os.path.isfile(file_path):
data = open(widget.desktopFile).read()
open(file_path, 'w').write(data)
os.system('gnome-desktop-item-edit ' + file_path)
self.mintMenuWin.hide() self.mintMenuWin.hide()
def onUninstallApp( self, menu, widget ): def onUninstallApp( self, menu, widget ):
widget.uninstall() widget.uninstall()
self.mintMenuWin.hide() self.mintMenuWin.hide()