parent
8f00708252
commit
de3aed33f8
2
makepot
2
makepot
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
xgettext --language=Python --keyword=_ --output=mintmenu.pot usr/lib/linuxmint/mintMenu/mintMenu.py usr/lib/linuxmint/mintMenu/mintMenuConfig.py usr/lib/linuxmint/mintMenu/keybinding.py usr/lib/linuxmint/mintMenu/plugins/recent.py usr/lib/linuxmint/mintMenu/plugins/applications.py usr/lib/linuxmint/mintMenu/plugins/system_management.py usr/lib/linuxmint/mintMenu/plugins/places.py
|
xgettext --language=Python --keyword=_ --output=mintmenu.pot usr/lib/linuxmint/mintMenu/mintMenu.py usr/lib/linuxmint/mintMenu/mintMenuConfig.py usr/lib/linuxmint/mintMenu/keybinding.py usr/lib/linuxmint/mintMenu/plugins/recent.py usr/lib/linuxmint/mintMenu/plugins/applications.py usr/lib/linuxmint/mintMenu/plugins/system_management.py usr/lib/linuxmint/mintMenu/plugins/places.py usr/lib/linuxmint/mintMenu/plugins/recentHelper.py
|
||||||
|
|
||||||
|
16
mintmenu.pot
16
mintmenu.pot
@ -126,9 +126,9 @@ msgstr ""
|
|||||||
msgid "Theme"
|
msgid "Theme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:66
|
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:69
|
||||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:189
|
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:202
|
||||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:190
|
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:203
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -333,8 +333,8 @@ msgstr ""
|
|||||||
msgid "<not set>"
|
msgid "<not set>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: usr/lib/linuxmint/mintMenu/plugins/recent.py:31
|
#: usr/lib/linuxmint/mintMenu/plugins/recent.py:32
|
||||||
msgid "Recent documents"
|
msgid "Recently used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:187
|
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:187
|
||||||
@ -532,3 +532,9 @@ msgstr ""
|
|||||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:260
|
#: usr/lib/linuxmint/mintMenu/plugins/places.py:260
|
||||||
msgid "Empty trash"
|
msgid "Empty trash"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: usr/lib/linuxmint/mintMenu/plugins/recentHelper.py:44
|
||||||
|
msgid ""
|
||||||
|
"Couldn't save recent apps. Check if you have write access to ~/.linuxmint/"
|
||||||
|
"mintMenu"
|
||||||
|
msgstr ""
|
||||||
|
@ -17,6 +17,7 @@ from easybuttons import *
|
|||||||
from execute import Execute
|
from execute import Execute
|
||||||
from easygsettings import EasyGSettings
|
from easygsettings import EasyGSettings
|
||||||
from easyfiles import *
|
from easyfiles import *
|
||||||
|
import recentHelper as RecentHelper
|
||||||
|
|
||||||
import matemenu
|
import matemenu
|
||||||
|
|
||||||
@ -157,6 +158,7 @@ class pluginclass( object ):
|
|||||||
@print_timing
|
@print_timing
|
||||||
def __init__( self, mintMenuWin, toggleButton, de ):
|
def __init__( self, mintMenuWin, toggleButton, de ):
|
||||||
self.mintMenuWin = mintMenuWin
|
self.mintMenuWin = mintMenuWin
|
||||||
|
RecentHelper.mintMenuWin = mintMenuWin
|
||||||
|
|
||||||
self.mainMenus = [ ]
|
self.mainMenus = [ ]
|
||||||
|
|
||||||
@ -281,7 +283,6 @@ class pluginclass( object ):
|
|||||||
self.icon_theme = Gtk.IconTheme.get_default();
|
self.icon_theme = Gtk.IconTheme.get_default();
|
||||||
self.icon_theme.connect("changed", self.on_icon_theme_changed)
|
self.icon_theme.connect("changed", self.on_icon_theme_changed)
|
||||||
|
|
||||||
|
|
||||||
def refresh_apt_cache(self):
|
def refresh_apt_cache(self):
|
||||||
if self.useAPT:
|
if self.useAPT:
|
||||||
os.system("mkdir -p %s/.linuxmint/mintMenu/" % home)
|
os.system("mkdir -p %s/.linuxmint/mintMenu/" % home)
|
||||||
@ -433,6 +434,7 @@ class pluginclass( object ):
|
|||||||
|
|
||||||
self.Todos()
|
self.Todos()
|
||||||
self.buildFavorites()
|
self.buildFavorites()
|
||||||
|
RecentHelper.buildRecentApps()
|
||||||
self.RebuildPlugin()
|
self.RebuildPlugin()
|
||||||
|
|
||||||
def GetGSettingsEntries( self ):
|
def GetGSettingsEntries( self ):
|
||||||
@ -1288,6 +1290,7 @@ class pluginclass( object ):
|
|||||||
def do_plugin( self ):
|
def do_plugin( self ):
|
||||||
self.Todos()
|
self.Todos()
|
||||||
self.buildFavorites()
|
self.buildFavorites()
|
||||||
|
RecentHelper.buildRecentApps()
|
||||||
|
|
||||||
# Scroll button into view
|
# Scroll button into view
|
||||||
def scrollItemIntoView( self, widget, event = None ):
|
def scrollItemIntoView( self, widget, event = None ):
|
||||||
@ -1361,7 +1364,7 @@ class pluginclass( object ):
|
|||||||
favButton.connect( "popup-menu", self.favPopup )
|
favButton.connect( "popup-menu", self.favPopup )
|
||||||
favButton.connect( "button-press-event", self.favPopup )
|
favButton.connect( "button-press-event", self.favPopup )
|
||||||
favButton.connect( "focus-in-event", self.scrollItemIntoView )
|
favButton.connect( "focus-in-event", self.scrollItemIntoView )
|
||||||
favButton.connect( "clicked", lambda w: self.mintMenuWin.hide() )
|
favButton.connect( "clicked", RecentHelper.applicationButtonClicked )
|
||||||
|
|
||||||
self.mintMenuWin.setTooltip( favButton, favButton.getTooltip() )
|
self.mintMenuWin.setTooltip( favButton, favButton.getTooltip() )
|
||||||
favButton.type = "location"
|
favButton.type = "location"
|
||||||
@ -1683,7 +1686,7 @@ class pluginclass( object ):
|
|||||||
self.mintMenuWin.setTooltip( item["button"], item["button"].getTooltip() )
|
self.mintMenuWin.setTooltip( item["button"], item["button"].getTooltip() )
|
||||||
item["button"].connect( "button-press-event", self.menuPopup )
|
item["button"].connect( "button-press-event", self.menuPopup )
|
||||||
item["button"].connect( "focus-in-event", self.scrollItemIntoView )
|
item["button"].connect( "focus-in-event", self.scrollItemIntoView )
|
||||||
item["button"].connect( "clicked", lambda w: self.mintMenuWin.hide() )
|
item["button"].connect( "clicked", RecentHelper.applicationButtonClicked )
|
||||||
if self.activeFilter[0] == 0:
|
if self.activeFilter[0] == 0:
|
||||||
item["button"].filterText( self.activeFilter[1] )
|
item["button"].filterText( self.activeFilter[1] )
|
||||||
else:
|
else:
|
||||||
|
@ -23,7 +23,6 @@
|
|||||||
<object class="GtkNotebook" id="RecentTabs">
|
<object class="GtkNotebook" id="RecentTabs">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="show_tabs">False</property>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkScrolledWindow" id="scrolledwindow1">
|
<object class="GtkScrolledWindow" id="scrolledwindow1">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
@ -9,6 +9,7 @@ from easygsettings import EasyGSettings
|
|||||||
from execute import Execute
|
from execute import Execute
|
||||||
from easyfiles import *
|
from easyfiles import *
|
||||||
from easybuttons import *
|
from easybuttons import *
|
||||||
|
import recentHelper as RecentHelper
|
||||||
|
|
||||||
class pluginclass:
|
class pluginclass:
|
||||||
"""This is the main class for the plugin"""
|
"""This is the main class for the plugin"""
|
||||||
@ -28,12 +29,17 @@ class pluginclass:
|
|||||||
self.window = self.builder.get_object( "window1" )
|
self.window = self.builder.get_object( "window1" )
|
||||||
|
|
||||||
#Set 'heading' property for plugin
|
#Set 'heading' property for plugin
|
||||||
self.heading = _("Recent documents")
|
self.heading = _("Recently used")
|
||||||
|
|
||||||
#This should be the first item added to the window in glade
|
#This should be the first item added to the window in glade
|
||||||
self.content_holder = self.builder.get_object( "eventbox1" )
|
self.content_holder = self.builder.get_object( "eventbox1" )
|
||||||
|
|
||||||
self.recentBox = self.builder.get_object("RecentBox")
|
self.recentBox = self.builder.get_object("RecentBox")
|
||||||
|
self.recentAppBox = self.builder.get_object("RecentApps")
|
||||||
|
RecentHelper.recentAppBox = self.recentAppBox
|
||||||
|
|
||||||
|
#self.recentApps = []
|
||||||
|
|
||||||
self.recentVBox = self.builder.get_object( "vbox1" )
|
self.recentVBox = self.builder.get_object( "vbox1" )
|
||||||
|
|
||||||
#Specify plugin width
|
#Specify plugin width
|
||||||
@ -49,12 +55,15 @@ class pluginclass:
|
|||||||
self.settings.notifyAdd( 'num-recent-docs', self.RegenPlugin )
|
self.settings.notifyAdd( 'num-recent-docs', self.RegenPlugin )
|
||||||
self.settings.notifyAdd( 'recent-font-size', self.RegenPlugin )
|
self.settings.notifyAdd( 'recent-font-size', self.RegenPlugin )
|
||||||
|
|
||||||
|
self.appSettings = EasyGSettings( "com.linuxmint.mintmenu.plugins.applications" )
|
||||||
|
self.appSettings.notifyAdd( "icon-size", self.RegenPlugin )
|
||||||
|
|
||||||
self.FileList=[]
|
self.FileList=[]
|
||||||
self.RecManagerInstance = Gtk.RecentManager.get_default()
|
self.RecManagerInstance = Gtk.RecentManager.get_default()
|
||||||
self.recentManagerId = self.RecManagerInstance.connect("changed", self.DoRecent)
|
self.recentManagerId = self.RecManagerInstance.connect("changed", self.DoRecent)
|
||||||
|
|
||||||
self.RegenPlugin()
|
self.RegenPlugin()
|
||||||
self.builder.get_object( "RecentTabs" ).set_current_page(1)
|
self.builder.get_object( "RecentTabs" ).set_current_page(0)
|
||||||
|
|
||||||
#Connect event handlers
|
#Connect event handlers
|
||||||
self.builder.get_object("ClrBtn").connect("clicked", self.clrmenu)
|
self.builder.get_object("ClrBtn").connect("clicked", self.clrmenu)
|
||||||
@ -79,6 +88,8 @@ class pluginclass:
|
|||||||
self.recenth = self.settings.get( 'int', 'height' )
|
self.recenth = self.settings.get( 'int', 'height' )
|
||||||
self.recentw = self.settings.get( 'int', 'width' )
|
self.recentw = self.settings.get( 'int', 'width' )
|
||||||
self.numentries = self.settings.get( 'int', 'num-recent-docs' )
|
self.numentries = self.settings.get( 'int', 'num-recent-docs' )
|
||||||
|
RecentHelper.numentries = self.numentries
|
||||||
|
|
||||||
self.recentfontsize = self.settings.get( 'int', 'recent-font-size' )
|
self.recentfontsize = self.settings.get( 'int', 'recent-font-size' )
|
||||||
|
|
||||||
# Hide vertical dotted separator
|
# Hide vertical dotted separator
|
||||||
@ -88,6 +99,7 @@ class pluginclass:
|
|||||||
# Allow plugin to be minimized to the left plugin pane
|
# Allow plugin to be minimized to the left plugin pane
|
||||||
self.sticky = self.settings.get( "bool", "sticky" )
|
self.sticky = self.settings.get( "bool", "sticky" )
|
||||||
self.minimized = self.settings.get( "bool", "minimized" )
|
self.minimized = self.settings.get( "bool", "minimized" )
|
||||||
|
RecentHelper.iconSize = self.appSettings.get( "int", "icon-size")
|
||||||
self.RebuildPlugin()
|
self.RebuildPlugin()
|
||||||
|
|
||||||
def SetHidden( self, state ):
|
def SetHidden( self, state ):
|
||||||
@ -121,6 +133,9 @@ class pluginclass:
|
|||||||
if Name != None:
|
if Name != None:
|
||||||
self.AddRecentBtn( Name, self.IconList[loc] )
|
self.AddRecentBtn( Name, self.IconList[loc] )
|
||||||
loc = loc + 1
|
loc = loc + 1
|
||||||
|
|
||||||
|
RecentHelper.doRecentApps()
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def clrmenu(self, *args, **kargs):
|
def clrmenu(self, *args, **kargs):
|
||||||
@ -210,3 +225,4 @@ class pluginclass:
|
|||||||
|
|
||||||
def do_plugin(self):
|
def do_plugin(self):
|
||||||
self.DoRecent()
|
self.DoRecent()
|
||||||
|
|
130
usr/lib/linuxmint/mintMenu/plugins/recentHelper.py
Normal file
130
usr/lib/linuxmint/mintMenu/plugins/recentHelper.py
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
#!/usr/bin/python2
|
||||||
|
|
||||||
|
import gi
|
||||||
|
gi.require_version("Gtk", "3.0")
|
||||||
|
|
||||||
|
import os
|
||||||
|
import string
|
||||||
|
from user import home
|
||||||
|
from easyfiles import *
|
||||||
|
from easybuttons import *
|
||||||
|
|
||||||
|
recentApps = []
|
||||||
|
mintMenuWin = None
|
||||||
|
recentAppBox = None
|
||||||
|
numentries = 10
|
||||||
|
iconSize = 16
|
||||||
|
|
||||||
|
def recentAppsAdd( recentAppsButton ):
|
||||||
|
if recentAppsButton:
|
||||||
|
|
||||||
|
recentApps.insert(0, recentAppsButton )
|
||||||
|
|
||||||
|
counter = 0
|
||||||
|
for recentApp in recentApps:
|
||||||
|
if counter != 0 and ( recentApp.desktopFile == recentAppsButton.desktopFile or counter >= numentries ):
|
||||||
|
del recentApps[counter]
|
||||||
|
counter = counter + 1
|
||||||
|
|
||||||
|
def recentAppsSave():
|
||||||
|
try:
|
||||||
|
if (not os.path.exists(home + "/.linuxmint/mintMenu/recentApplications.list")):
|
||||||
|
os.system("touch " + home + "/.linuxmint/mintMenu/recentApplications.list")
|
||||||
|
recentAppListFile = open( os.path.join( os.path.expanduser( "~"), ".linuxmint", "mintMenu", "recentApplications.list" ) , "w" )
|
||||||
|
|
||||||
|
for recentApp in recentApps:
|
||||||
|
if not hasattr(recentApp, "type") or recentApp.type == "location":
|
||||||
|
recentAppListFile.write( "location:" + recentApp.desktopFile + "\n" )
|
||||||
|
else:
|
||||||
|
recentAppListFile.write( recentApp.type + "\n" )
|
||||||
|
|
||||||
|
recentAppListFile.close( )
|
||||||
|
except Exception, e:
|
||||||
|
print e
|
||||||
|
msgDlg = Gtk.MessageDialog( None, gtk.DialogFlags.MODAL, Gtk.MessageType.ERROR, Gtk.ButtonsType.OK, _("Couldn't save recent apps. Check if you have write access to ~/.linuxmint/mintMenu")+"\n(" + e.__str__() + ")" )
|
||||||
|
msgDlg.run();
|
||||||
|
msgDlg.destroy();
|
||||||
|
|
||||||
|
def recentAppBuildLauncher( location ):
|
||||||
|
try:
|
||||||
|
ButtonIcon = None
|
||||||
|
# For Folders and Network Shares
|
||||||
|
location = string.join( location.split( "%20" ) )
|
||||||
|
|
||||||
|
if location.startswith( "file" ):
|
||||||
|
ButtonIcon = "mate-fs-directory"
|
||||||
|
|
||||||
|
if location.startswith( "smb" ) or location.startswith( "ssh" ) or location.startswith( "network" ):
|
||||||
|
ButtonIcon = "mate-fs-network"
|
||||||
|
|
||||||
|
#For Special locations
|
||||||
|
if location == "x-nautilus-desktop:///computer":
|
||||||
|
location = "/usr/share/applications/nautilus-computer.desktop"
|
||||||
|
elif location == "x-nautilus-desktop:///home":
|
||||||
|
location = "/usr/share/applications/nautilus-home.desktop"
|
||||||
|
elif location == "x-nautilus-desktop:///network":
|
||||||
|
location = "/usr/share/applications/network-scheme.desktop"
|
||||||
|
elif location.startswith( "x-nautilus-desktop:///" ):
|
||||||
|
location = "/usr/share/applications/nautilus-computer.desktop"
|
||||||
|
|
||||||
|
if location.startswith( "file://" ):
|
||||||
|
location = location[7:]
|
||||||
|
appButton = ApplicationLauncher( location, iconSize)
|
||||||
|
|
||||||
|
if appButton.appExec:
|
||||||
|
appButton.show()
|
||||||
|
appButton.connect( "clicked", applicationButtonClicked )
|
||||||
|
appButton.type = "location"
|
||||||
|
return appButton
|
||||||
|
except Exception, e:
|
||||||
|
print u"File in recentapp not found: '" + location + "'", e
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def buildRecentApps():
|
||||||
|
del recentApps[:]
|
||||||
|
try:
|
||||||
|
if (not os.path.exists(home + "/.linuxmint/mintMenu/recentApplications.list")):
|
||||||
|
os.system("touch " + home + "/.linuxmint/mintMenu/recentApplications.list")
|
||||||
|
recentAppListFile = open( os.path.join( os.path.expanduser( "~"), ".linuxmint", "mintMenu", "recentApplications.list" ) , "r" )
|
||||||
|
|
||||||
|
recentApplicationsList = recentAppListFile.readlines()
|
||||||
|
|
||||||
|
for app in recentApplicationsList :
|
||||||
|
app = app.strip()
|
||||||
|
|
||||||
|
if app[0:9] == "location:":
|
||||||
|
appButton = recentAppBuildLauncher( app[9:] )
|
||||||
|
else:
|
||||||
|
if ( app.endswith( ".desktop" ) ):
|
||||||
|
appButton = recentAppBuildLauncher( app )
|
||||||
|
else:
|
||||||
|
appButton = None
|
||||||
|
|
||||||
|
if appButton:
|
||||||
|
recentApps.append( appButton )
|
||||||
|
except Exception, e:
|
||||||
|
print e
|
||||||
|
return recentApps
|
||||||
|
|
||||||
|
def doRecentApps():
|
||||||
|
for i in recentAppBox.get_children():
|
||||||
|
i.destroy()
|
||||||
|
|
||||||
|
# recent apps
|
||||||
|
buildRecentApps()
|
||||||
|
for AButton in recentApps:
|
||||||
|
|
||||||
|
AButton.set_size_request( 200, -1 )
|
||||||
|
AButton.set_relief( Gtk.ReliefStyle.NONE )
|
||||||
|
|
||||||
|
recentAppBox.pack_start( AButton, False, True, 0 )
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
def applicationButtonClicked( widget ):
|
||||||
|
mintMenuWin.hide()
|
||||||
|
recentAppsAdd(widget)
|
||||||
|
recentAppsSave()
|
||||||
|
doRecentApps()
|
@ -417,7 +417,7 @@
|
|||||||
</key>
|
</key>
|
||||||
|
|
||||||
<key type="i" name="num-recent-docs">
|
<key type="i" name="num-recent-docs">
|
||||||
<default>10</default>
|
<default>20</default>
|
||||||
<summary></summary>
|
<summary></summary>
|
||||||
<description></description>
|
<description></description>
|
||||||
</key>
|
</key>
|
||||||
|
Loading…
Reference in New Issue
Block a user