6f69d0e499
during migration, - rename the old favorites file - delete the old recent file
121 lines
3.7 KiB
Python
121 lines
3.7 KiB
Python
#!/usr/bin/python3
|
|
|
|
import os
|
|
|
|
import gi
|
|
gi.require_version("Gtk", "3.0")
|
|
from gi.repository import Gtk
|
|
|
|
from plugins.easybuttons import ApplicationLauncher
|
|
|
|
home = os.path.expanduser("~")
|
|
recentApps = []
|
|
settings = None # set by recent plugin
|
|
|
|
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():
|
|
new_recent_apps = []
|
|
|
|
for recentApp in recentApps:
|
|
if not hasattr(recentApp, "type") or recentApp.type == "location":
|
|
new_recent_apps.append("location:" + recentApp.desktopFile)
|
|
else:
|
|
new_recent_apps.append(recentApp.type)
|
|
|
|
settings.set_strv("recent-apps-list", new_recent_apps)
|
|
|
|
def recentAppBuildLauncher(location):
|
|
try:
|
|
# For Folders and Network Shares
|
|
location = "".join(location.split("%20"))
|
|
|
|
# ButtonIcon = None
|
|
|
|
# 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:]
|
|
if os.path.exists(location):
|
|
appButton = ApplicationLauncher(location, iconSize)
|
|
if appButton.appExec:
|
|
appButton.show()
|
|
appButton.connect("clicked", applicationButtonClicked)
|
|
appButton.type = "location"
|
|
return appButton
|
|
print("RecentApp: %s not found." % location)
|
|
except Exception as e:
|
|
print("File in recentapp not found: '%s': %s" % (location, e))
|
|
|
|
return None
|
|
|
|
def buildRecentApps():
|
|
del recentApps[:]
|
|
try:
|
|
recent_apps = settings.get_strv("recent-apps-list")
|
|
|
|
for app in recent_apps:
|
|
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 as e:
|
|
print(e)
|
|
return recentApps
|
|
|
|
def doRecentApps():
|
|
if recentAppBox is not None:
|
|
# recentAppBox is initiated by the recent plugin
|
|
# only build UI widgets if it's enabled
|
|
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()
|