- more cleanup, and speed-up
- more fixes, including many icon and encoding related issues - replace some icons and remove compile.py - prepare for python3 port as much as possible
This commit is contained in:
parent
8b42c0f32f
commit
67eee16da8
13
debian/control
vendored
13
debian/control
vendored
@ -11,15 +11,18 @@ Depends:
|
||||
${python:Depends},
|
||||
${misc:Depends},
|
||||
python (>= 2.4), python (<< 3),
|
||||
mint-common,
|
||||
python-mate-menu, python-xdg, xdg-utils,
|
||||
python-apt,
|
||||
python-configobj,
|
||||
python-setproctitle,
|
||||
mate-menus,
|
||||
gvfs-bin,
|
||||
python-xlib,
|
||||
gir1.2-mate-panel, gir1.2-gtk-3.0, gir1.2-mate-desktop,
|
||||
python-xdg,
|
||||
xdg-utils,
|
||||
libglib2.0-bin,
|
||||
mate-menus,
|
||||
python-mate-menu,
|
||||
gir1.2-matepanelapplet-4.0,
|
||||
gir1.2-gtk-3.0,
|
||||
gir1.2-mate-desktop,
|
||||
mozo
|
||||
Description: Advanced MATE menu
|
||||
One of the most advanced menus under Linux. MintMenu supports filtering,
|
||||
|
5
debian/postinst
vendored
5
debian/postinst
vendored
@ -1,5 +1,5 @@
|
||||
#!/bin/sh
|
||||
# postinst script
|
||||
# postinst script
|
||||
# see: dh_installdeb(1)
|
||||
|
||||
set -e
|
||||
@ -18,7 +18,8 @@ set -e
|
||||
|
||||
case "$1" in
|
||||
configure)
|
||||
glib-compile-schemas /usr/share/glib-2.0/schemas
|
||||
glib-compile-schemas /usr/share/glib-2.0/schemas
|
||||
python -m compileall -qf /usr/lib/linuxmint/mintMenu/
|
||||
;;
|
||||
|
||||
abort-upgrade|abort-remove|abort-deconfigure)
|
||||
|
@ -1,5 +0,0 @@
|
||||
#!/usr/bin/python2
|
||||
|
||||
import compileall
|
||||
|
||||
compileall.compile_dir(".", force=1)
|
@ -29,7 +29,7 @@ gi.require_version("Gtk", "3.0")
|
||||
|
||||
from Xlib.display import Display
|
||||
from Xlib import X, error
|
||||
from gi.repository import Gtk, Gdk, GdkX11, GObject, GLib
|
||||
from gi.repository import Gtk, Gdk, GObject, GLib
|
||||
import threading
|
||||
|
||||
SPECIAL_MODS = (["Super_L", "<Super>"],
|
||||
|
@ -20,7 +20,6 @@ import pointerMonitor
|
||||
import setproctitle
|
||||
from plugins.execute import Execute
|
||||
|
||||
|
||||
GObject.threads_init()
|
||||
|
||||
# Rename the process
|
||||
@ -71,7 +70,7 @@ class MainWindow(object):
|
||||
|
||||
self.window.stick()
|
||||
|
||||
plugindir = os.path.join(os.path.expanduser("~"), ".linuxmint/mintMenu/plugins")
|
||||
plugindir = os.path.join(os.environ["HOME"], ".linuxmint/mintMenu/plugins")
|
||||
sys.path.append(plugindir)
|
||||
|
||||
self.panelSettings = Gio.Settings.new("org.mate.panel")
|
||||
@ -162,7 +161,7 @@ class MainWindow(object):
|
||||
|
||||
for plugin in self.pluginlist:
|
||||
if plugin in self.plugins:
|
||||
print u"Duplicate plugin in list: ", plugin
|
||||
print("Duplicate plugin in list: %s" % plugin)
|
||||
continue
|
||||
|
||||
if plugin != "newpane":
|
||||
@ -205,8 +204,7 @@ class MainWindow(object):
|
||||
MyPlugin.add(MyPlugin.content_holder)
|
||||
MyPlugin.width = 270
|
||||
MyPlugin.icon = 'mate-logo-icon.png'
|
||||
print u"Unable to load " + plugin + " plugin :-("
|
||||
|
||||
print("Unable to load %s plugin" % plugin)
|
||||
|
||||
self.panesToColor.append(MyPlugin.content_holder)
|
||||
MyPlugin.content_holder.show()
|
||||
@ -352,7 +350,6 @@ class MainWindow(object):
|
||||
widget.set_tooltip_text(tip)
|
||||
|
||||
def RegenPlugins(self, *args, **kargs):
|
||||
#print
|
||||
#print u"Reloading Plugins..."
|
||||
for item in self.paneholder:
|
||||
item.destroy()
|
||||
@ -473,11 +470,11 @@ class MenuWin(object):
|
||||
self.keybinder.connect("activate", self.onBindingPress)
|
||||
self.keybinder.start()
|
||||
self.settings.connect("changed::hot-key", self.hotkeyChanged)
|
||||
print "Binding to Hot Key: " + self.hotkeyText
|
||||
except Exception, cause:
|
||||
print("Binding to Hot Key: %s" % self.hotkeyText)
|
||||
except Exception as e:
|
||||
self.keybinder = None
|
||||
print "** WARNING ** - Keybinder Error"
|
||||
print "Error Report :\n", str(cause)
|
||||
print("** WARNING ** - Keybinder Error")
|
||||
print("Error Report :\n", e)
|
||||
|
||||
self.applet.set_can_focus(False)
|
||||
|
||||
@ -485,9 +482,9 @@ class MenuWin(object):
|
||||
self.pointerMonitor = pointerMonitor.PointerMonitor()
|
||||
self.pointerMonitor.connect("activate", self.onPointerOutside)
|
||||
self.mainwin.window.connect("realize", self.onRealize)
|
||||
except Exception, cause:
|
||||
print "** WARNING ** - Pointer Monitor Error"
|
||||
print "Error Report :\n", str(cause)
|
||||
except Exception as e:
|
||||
print("** WARNING ** - Pointer Monitor Error")
|
||||
print("Error Report :\n", e)
|
||||
|
||||
def onWindowMap(self, *args):
|
||||
self.applet.get_style_context().set_state(Gtk.StateFlags.SELECTED)
|
||||
@ -522,9 +519,9 @@ class MenuWin(object):
|
||||
|
||||
def leave_notify(self, applet, event):
|
||||
# Hack for mate-panel-test-applets focus issue (this can be commented)
|
||||
if event.state & Gdk.ModifierType.BUTTON1_MASK and applet.get_style_context().get_state() & Gtk.StateFlags.SELECTED:
|
||||
if event.x >= 0 and event.y >= 0 and event.x < applet.get_window().get_width() and event.y < applet.get_window().get_height():
|
||||
self.mainwin.stopHiding()
|
||||
# if event.state & Gdk.ModifierType.BUTTON1_MASK and applet.get_style_context().get_state() & Gtk.StateFlags.SELECTED:
|
||||
# if event.x >= 0 and event.y >= 0 and event.x < applet.get_window().get_width() and event.y < applet.get_window().get_height():
|
||||
# self.mainwin.stopHiding()
|
||||
|
||||
self.do_image(self.buttonIcon, False)
|
||||
|
||||
@ -542,13 +539,14 @@ class MenuWin(object):
|
||||
self.do_image(self.buttonIcon, False)
|
||||
self.systemlabel = Gtk.Label(label= "%s " % self.buttonText)
|
||||
if os.path.isfile("/etc/linuxmint/info"):
|
||||
info = open("/etc/linuxmint/info").readlines() #TODO py3 encoding="utf-8"
|
||||
for line in info:
|
||||
if line.startswith("DESCRIPTION="):
|
||||
tooltip = line.split("=",1)[1].replace('"','')
|
||||
self.systemlabel.set_tooltip_text(tooltip)
|
||||
self.button_icon.set_tooltip_text(tooltip)
|
||||
break
|
||||
with open("/etc/linuxmint/info") as info:
|
||||
for line in info:
|
||||
line = line.decode("utf-8")
|
||||
if line.startswith("DESCRIPTION="):
|
||||
tooltip = line.split("=",1)[1].strip('"\n')
|
||||
self.systemlabel.set_tooltip_text(tooltip)
|
||||
self.button_icon.set_tooltip_text(tooltip)
|
||||
break
|
||||
if self.applet.get_orient() == MatePanelApplet.AppletOrient.UP or self.applet.get_orient() == MatePanelApplet.AppletOrient.DOWN:
|
||||
self.button_box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
|
||||
self.button_box.pack_start(self.button_icon, False, False, 0)
|
||||
@ -568,17 +566,13 @@ class MenuWin(object):
|
||||
self.button_box.pack_start(self.button_icon , False, False, 0)
|
||||
self.button_icon.set_padding(0, 5)
|
||||
|
||||
|
||||
self.button_box.set_homogeneous(False)
|
||||
self.button_box.show_all()
|
||||
self.sizeButton()
|
||||
|
||||
self.button_box.get_style_context().add_class('mintmenu')
|
||||
|
||||
self.applet.add(self.button_box)
|
||||
self.applet.set_background_widget(self.applet)
|
||||
|
||||
|
||||
def loadSettings(self, *args, **kargs):
|
||||
self.hideIcon = self.settings.get_boolean("hide-applet-icon")
|
||||
self.buttonText = self.settings.get_string("applet-text")
|
||||
@ -637,7 +631,6 @@ class MenuWin(object):
|
||||
self.updateButton()
|
||||
self.applet.add(self.button_box)
|
||||
|
||||
|
||||
def updateButton(self):
|
||||
self.systemlabel.set_text(self.buttonText)
|
||||
self.button_icon.clear()
|
||||
@ -676,22 +669,17 @@ class MenuWin(object):
|
||||
self.updateButton()
|
||||
|
||||
def showAboutDialog(self, action, userdata = None):
|
||||
|
||||
about = Gtk.AboutDialog()
|
||||
about.set_name("mintMenu")
|
||||
import commands
|
||||
version = commands.getoutput("/usr/lib/linuxmint/common/version.py mintmenu")
|
||||
about.set_version(version)
|
||||
import subprocess
|
||||
(stdout, stderr) = subprocess.Popen(["/usr/lib/linuxmint/common/version.py", "mintmenu"],
|
||||
stdout=subprocess.PIPE).communicate()
|
||||
about.set_version(stdout.strip())
|
||||
try:
|
||||
h = open('/usr/share/common-licenses/GPL','r')
|
||||
s = h.readlines()
|
||||
gpl = ""
|
||||
for line in s:
|
||||
gpl += line
|
||||
h.close()
|
||||
gpl = open('/usr/share/common-licenses/GPL','r').read()
|
||||
about.set_license(gpl)
|
||||
except Exception, detail:
|
||||
print detail
|
||||
except Exception as e:
|
||||
print(e)
|
||||
about.set_comments(_("Advanced MATE Menu"))
|
||||
# about.set_authors(["Clement Lefebvre <clem@linuxmint.com>", "Lars-Peter Clausen <lars@laprican.de>"])
|
||||
about.set_translator_credits(("translator-credits"))
|
||||
@ -700,7 +688,6 @@ class MenuWin(object):
|
||||
about.connect("response", lambda dialog, r: dialog.destroy())
|
||||
about.show()
|
||||
|
||||
|
||||
def showPreferences(self, action, userdata = None):
|
||||
# Execute("mateconf-editor /apps/mintMenu")
|
||||
Execute(os.path.join(PATH, "mintMenuConfig.py"))
|
||||
@ -831,8 +818,8 @@ class MenuWin(object):
|
||||
self.de = "mate"
|
||||
elif os.path.exists("/usr/bin/thunar"):
|
||||
self.de = "xfce"
|
||||
except Exception, detail:
|
||||
print detail
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
def applet_factory(applet, iid, data):
|
||||
MenuWin(applet, iid)
|
||||
|
@ -1,41 +1,34 @@
|
||||
#!/usr/bin/python2
|
||||
|
||||
import gettext
|
||||
import os
|
||||
import sys
|
||||
from glob import glob
|
||||
|
||||
import gi
|
||||
gi.require_version("Gtk", "3.0")
|
||||
|
||||
from gi.repository import Gtk, Gdk, GdkPixbuf
|
||||
|
||||
import keybinding
|
||||
from plugins.easygsettings import EasyGSettings
|
||||
|
||||
PATH = os.path.abspath(os.path.dirname(sys.argv[0]))
|
||||
|
||||
try:
|
||||
import gettext
|
||||
import os
|
||||
import commands
|
||||
except Exception, e:
|
||||
print e
|
||||
sys.exit( 1 )
|
||||
|
||||
PATH = os.path.abspath( os.path.dirname( sys.argv[0] ) )
|
||||
|
||||
sys.path.append( os.path.join( PATH , "plugins") )
|
||||
sys.path.append(os.path.join(PATH , "plugins"))
|
||||
|
||||
# i18n
|
||||
gettext.install("mintmenu", "/usr/share/linuxmint/locale")
|
||||
|
||||
from easygsettings import EasyGSettings
|
||||
class mintMenuConfig(object):
|
||||
|
||||
class mintMenuConfig( object ):
|
||||
def __init__(self):
|
||||
|
||||
def __init__( self ):
|
||||
|
||||
self.path = os.path.abspath( os.path.dirname( sys.argv[0] ) )
|
||||
self.path = os.path.abspath(os.path.dirname(sys.argv[0]))
|
||||
|
||||
# Load glade file and extract widgets
|
||||
self.builder = Gtk.Builder()
|
||||
|
||||
self.builder.add_from_file (os.path.join(self.path, "mintMenuConfig.glade" ))
|
||||
self.builder.add_from_file(os.path.join(self.path, "mintMenuConfig.glade"))
|
||||
self.mainWindow=self.builder.get_object("mainWindow")
|
||||
|
||||
#i18n
|
||||
@ -106,40 +99,40 @@ class mintMenuConfig( object ):
|
||||
self.builder.get_object("logoutcheckbutton").set_label(_("Log Out"))
|
||||
self.builder.get_object("quitcheckbutton").set_label(_("Quit"))
|
||||
|
||||
self.editPlaceDialogTitle = (_("Edit Place"))
|
||||
self.newPlaceDialogTitle = (_("New Place"))
|
||||
self.folderChooserDialogTitle = (_("Select a folder"))
|
||||
self.editPlaceDialogTitle = _("Edit Place")
|
||||
self.newPlaceDialogTitle = _("New Place")
|
||||
self.folderChooserDialogTitle = _("Select a folder")
|
||||
|
||||
self.startWithFavorites = self.builder.get_object( "startWithFavorites" )
|
||||
self.showAppComments = self.builder.get_object( "showAppComments" )
|
||||
self.useAPT = self.builder.get_object( "use_apt" )
|
||||
self.showCategoryIcons = self.builder.get_object( "showCategoryIcons" )
|
||||
self.showRecentPlugin = self.builder.get_object( "showRecentPlugin" )
|
||||
self.showApplicationsPlugin = self.builder.get_object( "showApplicationsPlugin" )
|
||||
self.showSystemPlugin = self.builder.get_object( "showSystemPlugin" )
|
||||
self.showPlacesPlugin = self.builder.get_object( "showPlacesPlugin" )
|
||||
self.startWithFavorites = self.builder.get_object("startWithFavorites")
|
||||
self.showAppComments = self.builder.get_object("showAppComments")
|
||||
self.useAPT = self.builder.get_object("use_apt")
|
||||
self.showCategoryIcons = self.builder.get_object("showCategoryIcons")
|
||||
self.showRecentPlugin = self.builder.get_object("showRecentPlugin")
|
||||
self.showApplicationsPlugin = self.builder.get_object("showApplicationsPlugin")
|
||||
self.showSystemPlugin = self.builder.get_object("showSystemPlugin")
|
||||
self.showPlacesPlugin = self.builder.get_object("showPlacesPlugin")
|
||||
self.swapGeneric = self.builder.get_object("swapGeneric")
|
||||
self.hover = self.builder.get_object( "hover" )
|
||||
self.hoverDelay = self.builder.get_object( "hoverDelay" )
|
||||
self.rememberFilter = self.builder.get_object( "remember_filter" )
|
||||
self.iconSize = self.builder.get_object( "iconSize" )
|
||||
self.favIconSize = self.builder.get_object( "favIconSize" )
|
||||
self.placesIconSize = self.builder.get_object( "placesIconSize" )
|
||||
self.systemIconSize = self.builder.get_object( "systemIconSize" )
|
||||
self.favCols = self.builder.get_object( "numFavCols" )
|
||||
self.useCustomColors = self.builder.get_object( "useCustomColors" )
|
||||
self.backgroundColor = self.builder.get_object( "backgroundColor" )
|
||||
self.headingColor = self.builder.get_object( "headingColor" )
|
||||
self.backgroundColorLabel = self.builder.get_object( "backgroundColorLabel" )
|
||||
self.headingColorLabel = self.builder.get_object( "headingColorLabel" )
|
||||
self.showButtonIcon = self.builder.get_object( "showButtonIcon" )
|
||||
self.enableInternetSearch = self.builder.get_object( "enableInternetSearch" )
|
||||
self.buttonText = self.builder.get_object( "buttonText" )
|
||||
self.hotkeyWidget = keybinding.KeybindingWidget(_("Keyboard shortcut:") )
|
||||
grid = self.builder.get_object( "main_grid" )
|
||||
self.hover = self.builder.get_object("hover")
|
||||
self.hoverDelay = self.builder.get_object("hoverDelay")
|
||||
self.rememberFilter = self.builder.get_object("remember_filter")
|
||||
self.iconSize = self.builder.get_object("iconSize")
|
||||
self.favIconSize = self.builder.get_object("favIconSize")
|
||||
self.placesIconSize = self.builder.get_object("placesIconSize")
|
||||
self.systemIconSize = self.builder.get_object("systemIconSize")
|
||||
self.favCols = self.builder.get_object("numFavCols")
|
||||
self.useCustomColors = self.builder.get_object("useCustomColors")
|
||||
self.backgroundColor = self.builder.get_object("backgroundColor")
|
||||
self.headingColor = self.builder.get_object("headingColor")
|
||||
self.backgroundColorLabel = self.builder.get_object("backgroundColorLabel")
|
||||
self.headingColorLabel = self.builder.get_object("headingColorLabel")
|
||||
self.showButtonIcon = self.builder.get_object("showButtonIcon")
|
||||
self.enableInternetSearch = self.builder.get_object("enableInternetSearch")
|
||||
self.buttonText = self.builder.get_object("buttonText")
|
||||
self.hotkeyWidget = keybinding.KeybindingWidget(_("Keyboard shortcut:"))
|
||||
grid = self.builder.get_object("main_grid")
|
||||
grid.attach(self.hotkeyWidget, 0, 2, 2, 1)
|
||||
self.buttonIcon = self.builder.get_object( "buttonIcon" )
|
||||
self.buttonIconChooser = self.builder.get_object( "button_icon_chooser" )
|
||||
self.buttonIcon = self.builder.get_object("buttonIcon")
|
||||
self.buttonIconChooser = self.builder.get_object("button_icon_chooser")
|
||||
self.image_filter = Gtk.FileFilter()
|
||||
self.image_filter.set_name(_("Images"))
|
||||
self.image_filter.add_pattern("*.png")
|
||||
@ -152,115 +145,115 @@ class mintMenuConfig( object ):
|
||||
self.buttonIconChooser.add_filter(self.image_filter)
|
||||
self.buttonIconChooser.set_filter(self.image_filter)
|
||||
self.buttonIconImage = self.builder.get_object("image_button_icon")
|
||||
self.searchCommand = self.builder.get_object( "search_command" )
|
||||
self.computertoggle = self.builder.get_object( "computercheckbutton" )
|
||||
self.homefoldertoggle = self.builder.get_object( "homecheckbutton" )
|
||||
self.networktoggle = self.builder.get_object( "networkcheckbutton" )
|
||||
self.desktoptoggle = self.builder.get_object( "desktopcheckbutton" )
|
||||
self.trashtoggle = self.builder.get_object( "trashcheckbutton" )
|
||||
self.customplacestree = self.builder.get_object( "customplacestree" )
|
||||
self.allowPlacesScrollbarToggle = self.builder.get_object( "allowscrollbarcheckbutton" )
|
||||
self.showgtkbookmarksToggle = self.builder.get_object( "showgtkbookmarkscheckbutton" )
|
||||
self.placesHeightButton = self.builder.get_object( "placesHeightSpinButton" )
|
||||
if (self.allowPlacesScrollbarToggle.get_active() == False):
|
||||
self.searchCommand = self.builder.get_object("search_command")
|
||||
self.computertoggle = self.builder.get_object("computercheckbutton")
|
||||
self.homefoldertoggle = self.builder.get_object("homecheckbutton")
|
||||
self.networktoggle = self.builder.get_object("networkcheckbutton")
|
||||
self.desktoptoggle = self.builder.get_object("desktopcheckbutton")
|
||||
self.trashtoggle = self.builder.get_object("trashcheckbutton")
|
||||
self.customplacestree = self.builder.get_object("customplacestree")
|
||||
self.allowPlacesScrollbarToggle = self.builder.get_object("allowscrollbarcheckbutton")
|
||||
self.showgtkbookmarksToggle = self.builder.get_object("showgtkbookmarkscheckbutton")
|
||||
self.placesHeightButton = self.builder.get_object("placesHeightSpinButton")
|
||||
if not self.allowPlacesScrollbarToggle.get_active():
|
||||
self.placesHeightButton.set_sensitive(False)
|
||||
self.allowPlacesScrollbarToggle.connect("toggled", self.togglePlacesHeightEnabled )
|
||||
self.softwareManagerToggle = self.builder.get_object( "softwaremanagercheckbutton" )
|
||||
self.packageManagerToggle = self.builder.get_object( "packagemanagercheckbutton" )
|
||||
self.controlCenterToggle = self.builder.get_object( "controlcentercheckbutton" )
|
||||
self.terminalToggle = self.builder.get_object( "terminalcheckbutton" )
|
||||
self.lockToggle = self.builder.get_object( "lockcheckbutton" )
|
||||
self.logoutToggle = self.builder.get_object( "logoutcheckbutton" )
|
||||
self.quitToggle = self.builder.get_object( "quitcheckbutton" )
|
||||
self.allowSystemScrollbarToggle = self.builder.get_object( "allowscrollbarcheckbutton1" )
|
||||
self.systemHeightButton = self.builder.get_object( "systemHeightSpinButton" )
|
||||
if (self.allowSystemScrollbarToggle.get_active() == False): self.systemHeightButton.set_sensitive(False)
|
||||
self.allowSystemScrollbarToggle.connect("toggled", self.toggleSystemHeightEnabled )
|
||||
self.allowPlacesScrollbarToggle.connect("toggled", self.togglePlacesHeightEnabled)
|
||||
self.softwareManagerToggle = self.builder.get_object("softwaremanagercheckbutton")
|
||||
self.packageManagerToggle = self.builder.get_object("packagemanagercheckbutton")
|
||||
self.controlCenterToggle = self.builder.get_object("controlcentercheckbutton")
|
||||
self.terminalToggle = self.builder.get_object("terminalcheckbutton")
|
||||
self.lockToggle = self.builder.get_object("lockcheckbutton")
|
||||
self.logoutToggle = self.builder.get_object("logoutcheckbutton")
|
||||
self.quitToggle = self.builder.get_object("quitcheckbutton")
|
||||
self.allowSystemScrollbarToggle = self.builder.get_object("allowscrollbarcheckbutton1")
|
||||
self.systemHeightButton = self.builder.get_object("systemHeightSpinButton")
|
||||
if not self.allowSystemScrollbarToggle.get_active():
|
||||
self.systemHeightButton.set_sensitive(False)
|
||||
self.allowSystemScrollbarToggle.connect("toggled", self.toggleSystemHeightEnabled)
|
||||
if os.path.exists("/usr/bin/mintinstall"):
|
||||
self.builder.get_object( "softwaremanagercheckbutton" ).show()
|
||||
self.builder.get_object("softwaremanagercheckbutton").show()
|
||||
else:
|
||||
self.builder.get_object( "softwaremanagercheckbutton" ).hide()
|
||||
self.builder.get_object("softwaremanagercheckbutton").hide()
|
||||
|
||||
self.builder.get_object( "closeButton" ).connect("clicked", Gtk.main_quit )
|
||||
self.builder.get_object("closeButton").connect("clicked", Gtk.main_quit)
|
||||
|
||||
self.settings = EasyGSettings("com.linuxmint.mintmenu")
|
||||
self.settingsApplications = EasyGSettings("com.linuxmint.mintmenu.plugins.applications")
|
||||
self.settingsPlaces = EasyGSettings("com.linuxmint.mintmenu.plugins.places")
|
||||
self.settingsSystem = EasyGSettings("com.linuxmint.mintmenu.plugins.system_management")
|
||||
|
||||
self.settings = EasyGSettings( "com.linuxmint.mintmenu" )
|
||||
self.settingsApplications = EasyGSettings( "com.linuxmint.mintmenu.plugins.applications" )
|
||||
self.settingsPlaces = EasyGSettings( "com.linuxmint.mintmenu.plugins.places" )
|
||||
self.settingsSystem = EasyGSettings( "com.linuxmint.mintmenu.plugins.system_management" )
|
||||
self.useCustomColors.connect("toggled", self.toggleUseCustomColors)
|
||||
|
||||
self.useCustomColors.connect( "toggled", self.toggleUseCustomColors )
|
||||
self.bindGSettingsValueToWidget(self.settings, "bool", "start-with-favorites", self.startWithFavorites, "toggled", self.startWithFavorites.set_active, self.startWithFavorites.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settingsApplications, "bool", "show-application-comments", self.showAppComments, "toggled", self.showAppComments.set_active, self.showAppComments.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settingsApplications, "bool", "use-apt", self.useAPT, "toggled", self.useAPT.set_active, self.useAPT.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settingsApplications, "bool", "show-category-icons", self.showCategoryIcons, "toggled", self.showCategoryIcons.set_active, self.showCategoryIcons.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settingsApplications, "bool", "categories-mouse-over", self.hover, "toggled", self.hover.set_active, self.hover.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settingsApplications, "bool", "swap-generic-name", self.swapGeneric, "toggled", self.swapGeneric.set_active, self.swapGeneric.get_active)
|
||||
|
||||
self.bindGSettingsValueToWidget( self.settings, "bool", "start-with-favorites", self.startWithFavorites, "toggled", self.startWithFavorites.set_active, self.startWithFavorites.get_active )
|
||||
self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "show-application-comments", self.showAppComments, "toggled", self.showAppComments.set_active, self.showAppComments.get_active )
|
||||
self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "use-apt", self.useAPT, "toggled", self.useAPT.set_active, self.useAPT.get_active )
|
||||
self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "show-category-icons", self.showCategoryIcons, "toggled", self.showCategoryIcons.set_active, self.showCategoryIcons.get_active )
|
||||
self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "categories-mouse-over", self.hover, "toggled", self.hover.set_active, self.hover.get_active )
|
||||
self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "swap-generic-name", self.swapGeneric, "toggled", self.swapGeneric.set_active, self.swapGeneric.get_active )
|
||||
self.bindGSettingsValueToWidget(self.settingsApplications, "int", "category-hover-delay", self.hoverDelay, "value-changed", self.hoverDelay.set_value, self.hoverDelay.get_value)
|
||||
self.bindGSettingsValueToWidget(self.settingsApplications, "int", "icon-size", self.iconSize, "value-changed", self.iconSize.set_value, self.iconSize.get_value)
|
||||
self.bindGSettingsValueToWidget(self.settingsApplications, "int", "favicon-size", self.favIconSize, "value-changed", self.favIconSize.set_value, self.favIconSize.get_value)
|
||||
self.bindGSettingsValueToWidget(self.settingsApplications, "int", "fav-cols", self.favCols, "value-changed", self.favCols.set_value, self.favCols.get_value)
|
||||
self.bindGSettingsValueToWidget(self.settingsApplications, "bool", "remember-filter", self.rememberFilter, "toggled", self.rememberFilter.set_active, self.rememberFilter.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settingsApplications, "bool", "enable-internet-search", self.enableInternetSearch, "toggled", self.enableInternetSearch.set_active, self.enableInternetSearch.get_active)
|
||||
|
||||
self.bindGSettingsValueToWidget( self.settingsApplications, "int", "category-hover-delay", self.hoverDelay, "value-changed", self.hoverDelay.set_value, self.hoverDelay.get_value )
|
||||
self.bindGSettingsValueToWidget( self.settingsApplications, "int", "icon-size", self.iconSize, "value-changed", self.iconSize.set_value, self.iconSize.get_value )
|
||||
self.bindGSettingsValueToWidget( self.settingsApplications, "int", "favicon-size", self.favIconSize, "value-changed", self.favIconSize.set_value, self.favIconSize.get_value )
|
||||
self.bindGSettingsValueToWidget( self.settingsApplications, "int", "fav-cols", self.favCols, "value-changed", self.favCols.set_value, self.favCols.get_value )
|
||||
self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "remember-filter", self.rememberFilter, "toggled", self.rememberFilter.set_active, self.rememberFilter.get_active)
|
||||
self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "enable-internet-search", self.enableInternetSearch, "toggled", self.enableInternetSearch.set_active, self.enableInternetSearch.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settingsPlaces, "int", "icon-size", self.placesIconSize, "value-changed", self.placesIconSize.set_value, self.placesIconSize.get_value)
|
||||
self.bindGSettingsValueToWidget(self.settingsSystem, "int", "icon-size", self.systemIconSize, "value-changed", self.systemIconSize.set_value, self.systemIconSize.get_value)
|
||||
|
||||
self.bindGSettingsValueToWidget( self.settingsPlaces, "int", "icon-size", self.placesIconSize, "value-changed", self.placesIconSize.set_value, self.placesIconSize.get_value )
|
||||
self.bindGSettingsValueToWidget( self.settingsSystem, "int", "icon-size", self.systemIconSize, "value-changed", self.systemIconSize.set_value, self.systemIconSize.get_value )
|
||||
|
||||
self.bindGSettingsValueToWidget( self.settings, "bool", "use-custom-color", self.useCustomColors, "toggled", self.useCustomColors.set_active, self.useCustomColors.get_active )
|
||||
self.bindGSettingsValueToWidget( self.settings, "color", "custom-color", self.backgroundColor, "color-set", self.backgroundColor.set_rgba, self.getBackgroundColor )
|
||||
self.bindGSettingsValueToWidget( self.settings, "color", "custom-heading-color", self.headingColor, "color-set", self.headingColor.set_rgba, self.getHeadingColor )
|
||||
self.bindGSettingsValueToWidget( self.settings, "bool", "hide-applet-icon", self.showButtonIcon, "toggled", self.setShowButtonIcon, self.getShowButtonIcon )
|
||||
self.bindGSettingsValueToWidget( self.settings, "string", "applet-text", self.buttonText, "changed", self.buttonText.set_text, self.buttonText.get_text )
|
||||
self.bindGSettingsValueToWidget( self.settings, "string", "hot-key", self.hotkeyWidget, "accel-edited", self.hotkeyWidget.set_val, self.hotkeyWidget.get_val )
|
||||
self.bindGSettingsValueToWidget( self.settings, "string", "applet-icon", self.buttonIconChooser, "file-set", self.setButtonIcon, self.buttonIconChooser.get_filename )
|
||||
self.bindGSettingsValueToWidget( self.settingsApplications, "string", "search-command", self.searchCommand, "changed", self.searchCommand.set_text, self.searchCommand.get_text )
|
||||
self.bindGSettingsValueToWidget(self.settings, "bool", "use-custom-color", self.useCustomColors, "toggled", self.useCustomColors.set_active, self.useCustomColors.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settings, "color", "custom-color", self.backgroundColor, "color-set", self.backgroundColor.set_rgba, self.getBackgroundColor)
|
||||
self.bindGSettingsValueToWidget(self.settings, "color", "custom-heading-color", self.headingColor, "color-set", self.headingColor.set_rgba, self.getHeadingColor)
|
||||
self.bindGSettingsValueToWidget(self.settings, "bool", "hide-applet-icon", self.showButtonIcon, "toggled", self.setShowButtonIcon, self.getShowButtonIcon)
|
||||
self.bindGSettingsValueToWidget(self.settings, "string", "applet-text", self.buttonText, "changed", self.buttonText.set_text, self.buttonText.get_text)
|
||||
self.bindGSettingsValueToWidget(self.settings, "string", "hot-key", self.hotkeyWidget, "accel-edited", self.hotkeyWidget.set_val, self.hotkeyWidget.get_val)
|
||||
self.bindGSettingsValueToWidget(self.settings, "string", "applet-icon", self.buttonIconChooser, "file-set", self.setButtonIcon, self.buttonIconChooser.get_filename)
|
||||
self.bindGSettingsValueToWidget(self.settingsApplications, "string", "search-command", self.searchCommand, "changed", self.searchCommand.set_text, self.searchCommand.get_text)
|
||||
|
||||
self.getPluginsToggle()
|
||||
self.showRecentPlugin.connect("toggled", self.setPluginsLayout )
|
||||
self.showApplicationsPlugin.connect("toggled", self.setPluginsLayout )
|
||||
self.showSystemPlugin.connect("toggled", self.setPluginsLayout )
|
||||
self.showPlacesPlugin.connect("toggled", self.setPluginsLayout )
|
||||
self.showRecentPlugin.connect("toggled", self.setPluginsLayout)
|
||||
self.showApplicationsPlugin.connect("toggled", self.setPluginsLayout)
|
||||
self.showSystemPlugin.connect("toggled", self.setPluginsLayout)
|
||||
self.showPlacesPlugin.connect("toggled", self.setPluginsLayout)
|
||||
|
||||
|
||||
self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-computer", self.computertoggle, "toggled", self.computertoggle.set_active, self.computertoggle.get_active )
|
||||
self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-home-folder", self.homefoldertoggle, "toggled", self.homefoldertoggle.set_active, self.homefoldertoggle.get_active )
|
||||
self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-network", self.networktoggle, "toggled", self.networktoggle.set_active, self.networktoggle.get_active )
|
||||
self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-desktop", self.desktoptoggle, "toggled", self.desktoptoggle.set_active, self.desktoptoggle.get_active )
|
||||
self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-trash", self.trashtoggle, "toggled", self.trashtoggle.set_active, self.trashtoggle.get_active )
|
||||
self.bindGSettingsValueToWidget( self.settingsPlaces, "int", "height", self.placesHeightButton, "value-changed", self.placesHeightButton.set_value, self.placesHeightButton.get_value_as_int )
|
||||
self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "allow-scrollbar", self.allowPlacesScrollbarToggle, "toggled", self.allowPlacesScrollbarToggle.set_active, self.allowPlacesScrollbarToggle.get_active )
|
||||
self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-gtk-bookmarks", self.showgtkbookmarksToggle, "toggled", self.showgtkbookmarksToggle.set_active, self.showgtkbookmarksToggle.get_active )
|
||||
self.bindGSettingsValueToWidget(self.settingsPlaces, "bool", "show-computer", self.computertoggle, "toggled", self.computertoggle.set_active, self.computertoggle.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settingsPlaces, "bool", "show-home-folder", self.homefoldertoggle, "toggled", self.homefoldertoggle.set_active, self.homefoldertoggle.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settingsPlaces, "bool", "show-network", self.networktoggle, "toggled", self.networktoggle.set_active, self.networktoggle.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settingsPlaces, "bool", "show-desktop", self.desktoptoggle, "toggled", self.desktoptoggle.set_active, self.desktoptoggle.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settingsPlaces, "bool", "show-trash", self.trashtoggle, "toggled", self.trashtoggle.set_active, self.trashtoggle.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settingsPlaces, "int", "height", self.placesHeightButton, "value-changed", self.placesHeightButton.set_value, self.placesHeightButton.get_value_as_int)
|
||||
self.bindGSettingsValueToWidget(self.settingsPlaces, "bool", "allow-scrollbar", self.allowPlacesScrollbarToggle, "toggled", self.allowPlacesScrollbarToggle.set_active, self.allowPlacesScrollbarToggle.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settingsPlaces, "bool", "show-gtk-bookmarks", self.showgtkbookmarksToggle, "toggled", self.showgtkbookmarksToggle.set_active, self.showgtkbookmarksToggle.get_active)
|
||||
|
||||
self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-software-manager", self.softwareManagerToggle, "toggled", self.softwareManagerToggle.set_active, self.softwareManagerToggle.get_active )
|
||||
self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-package-manager", self.packageManagerToggle, "toggled", self.packageManagerToggle.set_active, self.packageManagerToggle.get_active )
|
||||
self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-control-center", self.controlCenterToggle, "toggled", self.controlCenterToggle.set_active, self.controlCenterToggle.get_active )
|
||||
self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-terminal", self.terminalToggle, "toggled", self.terminalToggle.set_active, self.terminalToggle.get_active )
|
||||
self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-lock-screen", self.lockToggle, "toggled", self.lockToggle.set_active, self.lockToggle.get_active )
|
||||
self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-logout", self.logoutToggle, "toggled", self.logoutToggle.set_active, self.logoutToggle.get_active )
|
||||
self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-quit", self.quitToggle, "toggled", self.quitToggle.set_active, self.quitToggle.get_active )
|
||||
self.bindGSettingsValueToWidget( self.settingsSystem, "int", "height", self.systemHeightButton, "value-changed", self.systemHeightButton.set_value, self.systemHeightButton.get_value_as_int )
|
||||
self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "allow-scrollbar", self.allowSystemScrollbarToggle, "toggled", self.allowSystemScrollbarToggle.set_active, self.allowSystemScrollbarToggle.get_active )
|
||||
self.bindGSettingsValueToWidget(self.settingsSystem, "bool", "show-software-manager", self.softwareManagerToggle, "toggled", self.softwareManagerToggle.set_active, self.softwareManagerToggle.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settingsSystem, "bool", "show-package-manager", self.packageManagerToggle, "toggled", self.packageManagerToggle.set_active, self.packageManagerToggle.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settingsSystem, "bool", "show-control-center", self.controlCenterToggle, "toggled", self.controlCenterToggle.set_active, self.controlCenterToggle.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settingsSystem, "bool", "show-terminal", self.terminalToggle, "toggled", self.terminalToggle.set_active, self.terminalToggle.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settingsSystem, "bool", "show-lock-screen", self.lockToggle, "toggled", self.lockToggle.set_active, self.lockToggle.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settingsSystem, "bool", "show-logout", self.logoutToggle, "toggled", self.logoutToggle.set_active, self.logoutToggle.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settingsSystem, "bool", "show-quit", self.quitToggle, "toggled", self.quitToggle.set_active, self.quitToggle.get_active)
|
||||
self.bindGSettingsValueToWidget(self.settingsSystem, "int", "height", self.systemHeightButton, "value-changed", self.systemHeightButton.set_value, self.systemHeightButton.get_value_as_int)
|
||||
self.bindGSettingsValueToWidget(self.settingsSystem, "bool", "allow-scrollbar", self.allowSystemScrollbarToggle, "toggled", self.allowSystemScrollbarToggle.set_active, self.allowSystemScrollbarToggle.get_active)
|
||||
|
||||
self.customplacepaths = self.settingsPlaces.get( "list-string", "custom-paths" )
|
||||
self.customplacenames = self.settingsPlaces.get( "list-string", "custom-names" )
|
||||
self.customplacepaths = self.settingsPlaces.get("list-string", "custom-paths")
|
||||
self.customplacenames = self.settingsPlaces.get("list-string", "custom-names")
|
||||
|
||||
self.customplacestreemodel = Gtk.ListStore( str, str)
|
||||
self.customplacestreemodel = Gtk.ListStore(str, str)
|
||||
self.cell = Gtk.CellRendererText()
|
||||
|
||||
for count in range( len(self.customplacepaths) ):
|
||||
self.customplacestreemodel.append( [ self.customplacenames[count], self.customplacepaths[count] ] )
|
||||
for count in range(len(self.customplacepaths)):
|
||||
self.customplacestreemodel.append([self.customplacenames[count], self.customplacepaths[count]])
|
||||
|
||||
self.customplacestreemodel.connect("row-inserted", self.updatePlacesGSettings)
|
||||
self.customplacestreemodel.connect("row-deleted", self.updatePlacesGSettings)
|
||||
self.customplacestreemodel.connect("rows-reordered", self.updatePlacesGSettings)
|
||||
self.customplacestreemodel.connect("row-changed", self.updatePlacesGSettings)
|
||||
self.customplacestree.set_model( self.customplacestreemodel )
|
||||
self.namescolumn = Gtk.TreeViewColumn( _("Name"), self.cell, text = 0 )
|
||||
self.placescolumn = Gtk.TreeViewColumn( _("Path"), self.cell, text = 1 )
|
||||
self.customplacestree.append_column( self.namescolumn )
|
||||
self.customplacestree.append_column( self.placescolumn )
|
||||
self.customplacestree.set_model(self.customplacestreemodel)
|
||||
self.namescolumn = Gtk.TreeViewColumn(_("Name"), self.cell, text = 0)
|
||||
self.placescolumn = Gtk.TreeViewColumn(_("Path"), self.cell, text = 1)
|
||||
self.customplacestree.append_column(self.namescolumn)
|
||||
self.customplacestree.append_column(self.placescolumn)
|
||||
self.builder.get_object("newButton").connect("clicked", self.newPlace)
|
||||
self.builder.get_object("editButton").connect("clicked", self.editPlace)
|
||||
self.builder.get_object("upButton").connect("clicked", self.moveUp)
|
||||
@ -268,9 +261,8 @@ class mintMenuConfig( object ):
|
||||
self.builder.get_object("removeButton").connect("clicked", self.removePlace)
|
||||
|
||||
#Detect themes and show theme here
|
||||
theme_name = self.settings.get ("string", "theme-name")
|
||||
themes = commands.getoutput("find /usr/share/themes -name gtkrc")
|
||||
themes = themes.split("\n")
|
||||
theme_name = self.settings.get("string", "theme-name")
|
||||
themes = glob("/usr/share/themes/*/*/gtkrc")
|
||||
model = Gtk.ListStore(str, str)
|
||||
self.builder.get_object("themesCombo").set_model(model)
|
||||
selected_theme = model.append([_("Desktop theme"), "default"])
|
||||
@ -295,10 +287,10 @@ class mintMenuConfig( object ):
|
||||
model = widget.get_model()
|
||||
iter = widget.get_active_iter()
|
||||
theme_name = model.get_value(iter, 1)
|
||||
self.settings.set( "string", "theme-name", theme_name)
|
||||
self.settings.set("string", "theme-name", theme_name)
|
||||
|
||||
def getPluginsToggle(self):
|
||||
array = self.settings.get ("list-string", "plugins-list")
|
||||
array = self.settings.get("list-string", "plugins-list")
|
||||
if "recent" in array:
|
||||
self.showRecentPlugin.set_active(True)
|
||||
else:
|
||||
@ -316,7 +308,7 @@ class mintMenuConfig( object ):
|
||||
else:
|
||||
self.showPlacesPlugin.set_active(False)
|
||||
|
||||
def setPluginsLayout (self, widget):
|
||||
def setPluginsLayout(self, widget):
|
||||
visiblePlugins = []
|
||||
if self.showPlacesPlugin.get_active():
|
||||
visiblePlugins.append("places")
|
||||
@ -330,79 +322,80 @@ class mintMenuConfig( object ):
|
||||
if self.showApplicationsPlugin.get_active() or self.showPlacesPlugin.get_active() or self.showSystemPlugin.get_active():
|
||||
visiblePlugins.append("newpane")
|
||||
visiblePlugins.append("recent")
|
||||
self.settings.set ("list-string", "plugins-list", visiblePlugins)
|
||||
self.settings.set("list-string", "plugins-list", visiblePlugins)
|
||||
|
||||
def setShowButtonIcon( self, value ):
|
||||
self.showButtonIcon.set_active(not value )
|
||||
def setShowButtonIcon(self, value):
|
||||
self.showButtonIcon.set_active(not value)
|
||||
|
||||
def setButtonIcon( self, value ):
|
||||
def setButtonIcon(self, value):
|
||||
self.buttonIconChooser.set_filename(value)
|
||||
pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(value, -1, 22)
|
||||
self.buttonIconImage.set_from_pixbuf(pixbuf)
|
||||
|
||||
def getShowButtonIcon( self ):
|
||||
def getShowButtonIcon(self):
|
||||
return not self.showButtonIcon.get_active()
|
||||
|
||||
def bindGSettingsValueToWidget( self, settings, setting_type, key, widget, changeEvent, setter, getter ):
|
||||
settings.notifyAdd( key, self.callSetter, args = [ setting_type, setter ] )
|
||||
def bindGSettingsValueToWidget(self, settings, setting_type, key, widget, changeEvent, setter, getter):
|
||||
settings.notifyAdd(key, self.callSetter, args = [setting_type, setter])
|
||||
if setting_type == "color":
|
||||
color = Gdk.RGBA()
|
||||
color.parse( settings.get( setting_type, key ) )
|
||||
setter( color )
|
||||
color.parse(settings.get(setting_type, key))
|
||||
setter(color)
|
||||
else:
|
||||
setter( settings.get( setting_type, key ) )
|
||||
widget.connect( changeEvent, lambda *args: self.callGetter( settings, setting_type, key, getter ) )
|
||||
setter(settings.get(setting_type, key))
|
||||
widget.connect(changeEvent, lambda *args: self.callGetter(settings, setting_type, key, getter))
|
||||
|
||||
def callSetter( self, settings, key, args ):
|
||||
def callSetter(self, settings, key, args):
|
||||
if args[0] == "bool":
|
||||
args[1]( settings.get_boolean(key) )
|
||||
args[1](settings.get_boolean(key))
|
||||
elif args[0] == "string":
|
||||
args[1]( settings.get_string(key) )
|
||||
args[1](settings.get_string(key))
|
||||
elif args[0] == "int":
|
||||
args[1]( settings.get_int(key) )
|
||||
args[1](settings.get_int(key))
|
||||
elif args[0] == "color":
|
||||
color = Gdk.RGBA()
|
||||
color.parse( settings.get_string(key) )
|
||||
args[1]( color )
|
||||
color.parse(settings.get_string(key))
|
||||
args[1](color)
|
||||
|
||||
def callGetter( self, settings, setting_type, key, getter ):
|
||||
if (setting_type == "int"):
|
||||
settings.set( setting_type, key, int(getter()))
|
||||
def callGetter(self, settings, setting_type, key, getter):
|
||||
if setting_type == "int":
|
||||
settings.set(setting_type, key, int(getter()))
|
||||
else:
|
||||
settings.set( setting_type, key, getter())
|
||||
settings.set(setting_type, key, getter())
|
||||
|
||||
def toggleUseCustomColors( self, widget ):
|
||||
self.backgroundColor.set_sensitive( widget.get_active() )
|
||||
self.headingColor.set_sensitive( widget.get_active() )
|
||||
self.backgroundColorLabel.set_sensitive( widget.get_active() )
|
||||
self.headingColorLabel.set_sensitive( widget.get_active() )
|
||||
def toggleUseCustomColors(self, widget):
|
||||
self.backgroundColor.set_sensitive(widget.get_active())
|
||||
self.headingColor.set_sensitive(widget.get_active())
|
||||
self.backgroundColorLabel.set_sensitive(widget.get_active())
|
||||
self.headingColorLabel.set_sensitive(widget.get_active())
|
||||
|
||||
def getBackgroundColor( self ):
|
||||
def getBackgroundColor(self):
|
||||
color = self.backgroundColor.get_rgba()
|
||||
return self.gdkRGBAToString( color )
|
||||
return self.gdkRGBAToString(color)
|
||||
|
||||
def getHeadingColor( self ):
|
||||
def getHeadingColor(self):
|
||||
color = self.headingColor.get_rgba()
|
||||
return self.gdkRGBAToString( color )
|
||||
return self.gdkRGBAToString(color)
|
||||
|
||||
def gdkRGBAToString( self, gdkRGBA ):
|
||||
return "#%.2X%.2X%.2X" % ( gdkRGBA.red * 256, gdkRGBA.green * 256, gdkRGBA.blue * 256 )
|
||||
def gdkRGBAToString(self, gdkRGBA):
|
||||
return "#%.2X%.2X%.2X" % (gdkRGBA.red * 256, gdkRGBA.green * 256, gdkRGBA.blue * 256)
|
||||
|
||||
def moveUp( self, upButton ):
|
||||
def moveUp(self, upButton):
|
||||
|
||||
treeselection = self.customplacestree.get_selection()
|
||||
currentiter = (treeselection.get_selected())[1]
|
||||
currentiter = treeselection.get_selected()[1]
|
||||
|
||||
if ( treeselection != None ):
|
||||
if treeselection:
|
||||
|
||||
lagiter = self.customplacestreemodel.get_iter_first()
|
||||
nextiter = self.customplacestreemodel.get_iter_first()
|
||||
|
||||
while ( (self.customplacestreemodel.get_path(nextiter) != self.customplacestreemodel.get_path(currentiter)) & (nextiter != None)):
|
||||
while nextiter and self.customplacestreemodel.get_path(nextiter) != \
|
||||
self.customplacestreemodel.get_path(currentiter):
|
||||
lagiter = nextiter
|
||||
nextiter = self.customplacestreemodel.iter_next(nextiter)
|
||||
|
||||
if (nextiter != None):
|
||||
if nextiter:
|
||||
self.customplacestreemodel.swap(currentiter, lagiter)
|
||||
|
||||
return
|
||||
@ -410,51 +403,51 @@ class mintMenuConfig( object ):
|
||||
def newPlace(self, newButton):
|
||||
self.builder.get_object("label2").set_text(_("Name:"))
|
||||
self.builder.get_object("label1").set_text(_("Path:"))
|
||||
newPlaceDialog = self.builder.get_object( "editPlaceDialog" )
|
||||
folderChooserDialog = self.builder.get_object( "fileChooserDialog" )
|
||||
newPlaceDialog = self.builder.get_object("editPlaceDialog")
|
||||
folderChooserDialog = self.builder.get_object("fileChooserDialog")
|
||||
newPlaceDialog.set_transient_for(self.mainWindow)
|
||||
newPlaceDialog.set_icon_from_file("/usr/lib/linuxmint/mintMenu/icon.svg")
|
||||
newPlaceDialog.set_title(self.newPlaceDialogTitle)
|
||||
folderChooserDialog.set_title(self.folderChooserDialogTitle)
|
||||
newPlaceDialog.set_default_response(Gtk.ResponseType.OK)
|
||||
newPlaceName = self.builder.get_object( "nameEntryBox" )
|
||||
newPlacePath = self.builder.get_object( "pathEntryBox" )
|
||||
folderButton = self.builder.get_object( "folderButton" )
|
||||
newPlaceName = self.builder.get_object("nameEntryBox")
|
||||
newPlacePath = self.builder.get_object("pathEntryBox")
|
||||
folderButton = self.builder.get_object("folderButton")
|
||||
def chooseFolder(folderButton):
|
||||
currentPath = newPlacePath.get_text()
|
||||
if (currentPath!=""):
|
||||
if currentPath:
|
||||
folderChooserDialog.select_filename(currentPath)
|
||||
response = folderChooserDialog.run()
|
||||
folderChooserDialog.hide()
|
||||
if (response == Gtk.ResponseType.OK):
|
||||
newPlacePath.set_text( folderChooserDialog.get_filenames()[0] )
|
||||
if response == Gtk.ResponseType.OK:
|
||||
newPlacePath.set_text(folderChooserDialog.get_filenames()[0])
|
||||
folderButton.connect("clicked", chooseFolder)
|
||||
|
||||
response = newPlaceDialog.run()
|
||||
newPlaceDialog.hide()
|
||||
if (response == Gtk.ResponseType.OK ):
|
||||
if response == Gtk.ResponseType.OK:
|
||||
name = newPlaceName.get_text()
|
||||
path = newPlacePath.get_text()
|
||||
if (name != "" and path !=""):
|
||||
self.customplacestreemodel.append( (name, path) )
|
||||
if name and path:
|
||||
self.customplacestreemodel.append((name, path))
|
||||
|
||||
def editPlace(self, editButton):
|
||||
self.builder.get_object("label2").set_text(_("Name:"))
|
||||
self.builder.get_object("label1").set_text(_("Path:"))
|
||||
editPlaceDialog = self.builder.get_object( "editPlaceDialog" )
|
||||
folderChooserDialog = self.builder.get_object( "fileChooserDialog" )
|
||||
editPlaceDialog = self.builder.get_object("editPlaceDialog")
|
||||
folderChooserDialog = self.builder.get_object("fileChooserDialog")
|
||||
editPlaceDialog.set_transient_for(self.mainWindow)
|
||||
editPlaceDialog.set_icon_from_file("/usr/lib/linuxmint/mintMenu/icon.svg")
|
||||
editPlaceDialog.set_title(self.editPlaceDialogTitle)
|
||||
folderChooserDialog.set_title(self.folderChooserDialogTitle)
|
||||
editPlaceDialog.set_default_response(Gtk.ResponseType.OK)
|
||||
editPlaceName = self.builder.get_object( "nameEntryBox" )
|
||||
editPlacePath = self.builder.get_object( "pathEntryBox" )
|
||||
folderButton = self.builder.get_object( "folderButton" )
|
||||
editPlaceName = self.builder.get_object("nameEntryBox")
|
||||
editPlacePath = self.builder.get_object("pathEntryBox")
|
||||
folderButton = self.builder.get_object("folderButton")
|
||||
treeselection = self.customplacestree.get_selection()
|
||||
currentiter = (treeselection.get_selected())[1]
|
||||
currentiter = treeselection.get_selected()[1]
|
||||
|
||||
if (currentiter != None):
|
||||
if currentiter:
|
||||
|
||||
initName = self.customplacestreemodel.get_value(currentiter, 0)
|
||||
initPath = self.customplacestreemodel.get_value(currentiter, 1)
|
||||
@ -463,70 +456,69 @@ class mintMenuConfig( object ):
|
||||
editPlacePath.set_text(initPath)
|
||||
def chooseFolder(folderButton):
|
||||
currentPath = editPlacePath.get_text()
|
||||
if (currentPath!=""):
|
||||
if currentPath:
|
||||
folderChooserDialog.select_filename(currentPath)
|
||||
response = folderChooserDialog.run()
|
||||
folderChooserDialog.hide()
|
||||
if (response == Gtk.ResponseType.OK):
|
||||
editPlacePath.set_text( folderChooserDialog.get_filenames()[0] )
|
||||
if response == Gtk.ResponseType.OK:
|
||||
editPlacePath.set_text(folderChooserDialog.get_filenames()[0])
|
||||
folderButton.connect("clicked", chooseFolder)
|
||||
response = editPlaceDialog.run()
|
||||
editPlaceDialog.hide()
|
||||
if (response == Gtk.ResponseType.OK):
|
||||
if response == Gtk.ResponseType.OK:
|
||||
name = editPlaceName.get_text()
|
||||
path = editPlacePath.get_text()
|
||||
if (name != "" and path != ""):
|
||||
if name and path:
|
||||
self.customplacestreemodel.set_value(currentiter, 0, name)
|
||||
self.customplacestreemodel.set_value(currentiter, 1, path)
|
||||
|
||||
def moveDown(self, downButton):
|
||||
|
||||
treeselection = self.customplacestree.get_selection()
|
||||
currentiter = (treeselection.get_selected())[1]
|
||||
currentiter = treeselection.get_selected()[1]
|
||||
|
||||
nextiter = self.customplacestreemodel.iter_next(currentiter)
|
||||
|
||||
if (nextiter != None):
|
||||
if nextiter:
|
||||
self.customplacestreemodel.swap(currentiter, nextiter)
|
||||
|
||||
return
|
||||
|
||||
|
||||
def removePlace(self, removeButton):
|
||||
|
||||
treeselection = self.customplacestree.get_selection()
|
||||
currentiter = (treeselection.get_selected())[1]
|
||||
currentiter = treeselection.get_selected()[1]
|
||||
|
||||
if (currentiter != None):
|
||||
if currentiter:
|
||||
self.customplacestreemodel.remove(currentiter)
|
||||
|
||||
return
|
||||
|
||||
def togglePlacesHeightEnabled(self, toggle):
|
||||
if (toggle.get_active() == True):
|
||||
if toggle.get_active():
|
||||
self.placesHeightButton.set_sensitive(True)
|
||||
else:
|
||||
self.placesHeightButton.set_sensitive(False)
|
||||
|
||||
def toggleSystemHeightEnabled(self, toggle):
|
||||
if (toggle.get_active() == True):
|
||||
if toggle.get_active():
|
||||
self.systemHeightButton.set_sensitive(True)
|
||||
else:
|
||||
self.systemHeightButton.set_sensitive(False)
|
||||
|
||||
def updatePlacesGSettings(self, treemodel, path, iter = None, new_order = None):
|
||||
# Do only if not partway though an append operation; Append = insert+change+change and each creates a signal
|
||||
if ((iter == None) or (self.customplacestreemodel.get_value(iter, 1) != None)):
|
||||
# Do only if not partway though an append operation;
|
||||
# Append = insert+change+change and each creates a signal
|
||||
if not iter or self.customplacestreemodel.get_value(iter, 1):
|
||||
treeiter = self.customplacestreemodel.get_iter_first()
|
||||
customplacenames = [ ]
|
||||
customplacepaths = [ ]
|
||||
while( treeiter != None ):
|
||||
customplacenames = customplacenames + [ self.customplacestreemodel.get_value(treeiter, 0 ) ]
|
||||
customplacepaths = customplacepaths + [ self.customplacestreemodel.get_value(treeiter, 1 ) ]
|
||||
customplacenames = []
|
||||
customplacepaths = []
|
||||
while treeiter:
|
||||
customplacenames = customplacenames + [self.customplacestreemodel.get_value(treeiter, 0)]
|
||||
customplacepaths = customplacepaths + [self.customplacestreemodel.get_value(treeiter, 1)]
|
||||
treeiter = self.customplacestreemodel.iter_next(treeiter)
|
||||
self.settingsPlaces.set( "list-string", "custom-paths", customplacepaths)
|
||||
self.settingsPlaces.set( "list-string", "custom-names", customplacenames)
|
||||
|
||||
self.settingsPlaces.set("list-string", "custom-paths", customplacepaths)
|
||||
self.settingsPlaces.set("list-string", "custom-names", customplacenames)
|
||||
|
||||
window = mintMenuConfig()
|
||||
Gtk.main()
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -7,10 +7,9 @@ import xdg.DesktopEntry
|
||||
import xdg.Menu
|
||||
|
||||
import gi
|
||||
gi.require_version('MateDesktop', '2.0')
|
||||
from gi.repository import Gtk, Gdk, GLib
|
||||
from gi.repository import Pango
|
||||
from gi.repository import GObject
|
||||
gi.require_version("Gtk", "3.0")
|
||||
gi.require_version("MateDesktop", "2.0")
|
||||
from gi.repository import Gtk, Gdk, GdkPixbuf, GLib, GObject, Pango, MateDesktop
|
||||
|
||||
from plugins.execute import Execute
|
||||
from plugins.filemonitor import monitor as filemonitor
|
||||
@ -37,7 +36,7 @@ class IconManager(GObject.GObject):
|
||||
#self.themes = map( createTheme, [d for d in os.listdir("/usr/share/icons") if os.path.isdir(os.path.join("/usr/share/icons", d))])
|
||||
|
||||
self.defaultTheme = Gtk.IconTheme.get_default()
|
||||
defaultKdeTheme = createTheme("kde.default")
|
||||
#defaultKdeTheme = createTheme("kde.default")
|
||||
|
||||
# Setup and clean up the temp icon dir
|
||||
configDir = GLib.get_user_config_dir()
|
||||
@ -49,19 +48,17 @@ class IconManager(GObject.GObject):
|
||||
os.remove(os.path.join(self.iconDir, fn))
|
||||
|
||||
self.defaultTheme.append_search_path(self.iconDir)
|
||||
|
||||
# Themes with the same content as the default them aren't needed
|
||||
#self.themes = [theme for theme in self.themes if theme.list_icons() != defaultTheme.list_icons()]
|
||||
|
||||
self.themes = [self.defaultTheme, defaultKdeTheme]
|
||||
#self.themes = [self.defaultTheme, defaultKdeTheme]
|
||||
self.themes = [self.defaultTheme]
|
||||
|
||||
# Listen for changes in the themes
|
||||
for theme in self.themes:
|
||||
theme.connect("changed", self.themeChanged)
|
||||
|
||||
# for theme in self.themes:
|
||||
# theme.connect("changed", self.themeChanged)
|
||||
|
||||
def getIcon(self, iconName, iconSize):
|
||||
|
||||
if not iconName:
|
||||
return None
|
||||
|
||||
@ -89,22 +86,12 @@ class IconManager(GObject.GObject):
|
||||
shutil.copyfile(iconFileName, os.path.join(self.iconDir, tmpIconName))
|
||||
self.defaultTheme.append_search_path(self.iconDir)
|
||||
|
||||
image = Gtk.Image()
|
||||
icon_found = False
|
||||
for theme in self.themes:
|
||||
if theme.lookup_icon(realIconName, 0, Gtk.IconLookupFlags.FORCE_REGULAR):
|
||||
icon_found = True
|
||||
break
|
||||
|
||||
if icon_found:
|
||||
image.set_from_icon_name(realIconName, Gtk.IconSize.DND)
|
||||
image.set_pixel_size(iconSize)
|
||||
else:
|
||||
image = None
|
||||
|
||||
image = Gtk.Image.new_from_icon_name(realIconName, Gtk.IconSize.DND)
|
||||
image.set_pixel_size(iconSize)
|
||||
return image
|
||||
except Exception, e:
|
||||
print "Exception " + e.__class__.__name__ + ": " + e.message
|
||||
|
||||
except Exception as e:
|
||||
print("Exception %s: %s" % (e.__class__.__name__, e))
|
||||
return None
|
||||
|
||||
def themeChanged(self, theme):
|
||||
@ -128,14 +115,11 @@ class easyButton(Gtk.Button):
|
||||
HBox1 = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
|
||||
self.labelBox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=2)
|
||||
|
||||
self.buttonImage = self.getIcon(self.iconSize)
|
||||
if not self.buttonImage:
|
||||
self.buttonImage = Gtk.Image()
|
||||
self.buttonImage.set_size_request(self.iconSize, self.iconSize)
|
||||
|
||||
self.buttonImage = Gtk.Image()
|
||||
icon = self.getIcon(self.iconSize)
|
||||
if icon:
|
||||
self.buttonImage = icon
|
||||
else:
|
||||
#[iW, iH] = iconManager.getIconSize(self.iconSize)
|
||||
self.buttonImage.set_size_request(self.iconSize, self.iconSize )
|
||||
self.image_box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
|
||||
self.image_box.pack_start(self.buttonImage, False, False, 5)
|
||||
self.image_box.show_all()
|
||||
@ -158,7 +142,7 @@ class easyButton(Gtk.Button):
|
||||
self.connectSelf("destroy", self.onDestroy)
|
||||
self.connect("released", self.onRelease)
|
||||
# Reload icons when the theme changed
|
||||
self.themeChangedHandlerId = iconManager.connect("changed", self.themeChanged)
|
||||
# self.themeChangedHandlerId = iconManager.connect("changed", self.themeChanged)
|
||||
|
||||
def connectSelf(self, event, callback):
|
||||
self.connections.append(self.connect(event, callback))
|
||||
@ -168,12 +152,11 @@ class easyButton(Gtk.Button):
|
||||
|
||||
def onDestroy(self, widget):
|
||||
self.buttonImage.clear()
|
||||
iconManager.disconnect(self.themeChangedHandlerId)
|
||||
# iconManager.disconnect(self.themeChangedHandlerId)
|
||||
for connection in self.connections:
|
||||
self.disconnect(connection)
|
||||
del self.connections
|
||||
|
||||
|
||||
def addLabel(self, text, styles = None):
|
||||
label = Gtk.Label()
|
||||
if "<b>" in text or "<span" in text:
|
||||
@ -193,15 +176,10 @@ class easyButton(Gtk.Button):
|
||||
label.show()
|
||||
self.labelBox.pack_start(label , True, True, 0)
|
||||
|
||||
|
||||
def getIcon(self, iconSize):
|
||||
if not self.iconName:
|
||||
return None
|
||||
|
||||
icon = iconManager.getIcon(self.iconName, iconSize)
|
||||
if icon is None:
|
||||
icon = iconManager.getIcon("application-default-icon", iconSize)
|
||||
|
||||
return icon
|
||||
|
||||
def setIcon(self, iconName):
|
||||
@ -248,7 +226,6 @@ class ApplicationLauncher(easyButton):
|
||||
desktopFile = desktopItem.filename
|
||||
self.appDirs = [os.path.dirname(desktopItem.filename)]
|
||||
else:
|
||||
# XXX: All menu entries on LM19.1 end here
|
||||
desktopItem = xdg.DesktopEntry.DesktopEntry(desktopFile)
|
||||
self.appDirs = [os.path.dirname(desktopFile)]
|
||||
|
||||
@ -260,8 +237,8 @@ class ApplicationLauncher(easyButton):
|
||||
self.desktopEntryMonitors = []
|
||||
|
||||
base = os.path.basename(self.desktopFile)
|
||||
for dir in self.appDirs:
|
||||
self.desktopEntryMonitors.append(filemonitor.addMonitor(os.path.join(dir, base) , self.desktopEntryFileChangedCallback))
|
||||
for directory in self.appDirs:
|
||||
self.desktopEntryMonitors.append(filemonitor.addMonitor(os.path.join(directory, base) , self.desktopEntryFileChangedCallback))
|
||||
|
||||
easyButton.__init__(self, self.appIconName, iconSize)
|
||||
self.setupLabels()
|
||||
@ -271,11 +248,7 @@ class ApplicationLauncher(easyButton):
|
||||
|
||||
targets = (Gtk.TargetEntry.new("text/plain", 0, 100), Gtk.TargetEntry.new("text/uri-list", 0, 101))
|
||||
self.drag_source_set(Gdk.ModifierType.BUTTON1_MASK, targets, Gdk.DragAction.COPY)
|
||||
|
||||
icon = self.getIcon(Gtk.IconSize.DND)
|
||||
if icon:
|
||||
iconName, s = icon.get_icon_name()
|
||||
self.drag_source_set_icon_name(iconName)
|
||||
self.drag_source_set_icon_name(self.iconName)
|
||||
|
||||
self.connectSelf("focus-in-event", self.onFocusIn)
|
||||
self.connectSelf("focus-out-event", self.onFocusOut)
|
||||
@ -301,19 +274,19 @@ class ApplicationLauncher(easyButton):
|
||||
self.appComment = self.appComment.strip()
|
||||
|
||||
basename = os.path.basename(self.desktopFile)
|
||||
self.startupFilePath = os.path.join(os.path.expanduser("~"), ".config", "autostart", basename)
|
||||
self.startupFilePath = os.path.join(os.environ['HOME'], ".config/autostart", basename)
|
||||
if self.startupMonitorId:
|
||||
filemonitor.removeMonitor(self.startupMonitorId )
|
||||
if os.path.exists(self.startupFilePath):
|
||||
self.startupMonitorId = filemonitor.addMonitor(self.startupFilePath, self.startupFileChanged)
|
||||
|
||||
except Exception, e:
|
||||
print e
|
||||
except Exception as e:
|
||||
print(e)
|
||||
self.appName = ""
|
||||
self.appGenericName = ""
|
||||
self.appComment = ""
|
||||
self.appExec = ""
|
||||
self.appIconName = ""
|
||||
self.appIconName = ""
|
||||
self.appCategories = ""
|
||||
self.appDocPath = ""
|
||||
self.startupMonitorId = 0
|
||||
@ -338,7 +311,6 @@ class ApplicationLauncher(easyButton):
|
||||
if keyw != "" and appName.find(keyw) == -1 and appGenericName.find(keyw) == -1 and appComment.find(keyw) == -1 and appExec.find(keyw) == -1:
|
||||
self.hide()
|
||||
return False
|
||||
|
||||
self.show()
|
||||
return True
|
||||
|
||||
@ -392,39 +364,39 @@ class ApplicationLauncher(easyButton):
|
||||
def startupFileChanged(self, *args):
|
||||
self.inStartup = os.path.exists(self.startupFilePath)
|
||||
|
||||
# def addToStartup(self):
|
||||
# startupDir = os.path.join(os.path.expanduser("~"), ".config", "autostart")
|
||||
# if not os.path.exists(startupDir):
|
||||
# os.makedirs(startupDir)
|
||||
def addToStartup(self):
|
||||
startupDir = os.path.join(os.path.dirname(self.startupFilePath))
|
||||
if not os.path.exists(startupDir):
|
||||
os.makedirs(startupDir)
|
||||
|
||||
# shutil.copyfile(self.desktopFile, self.startupFilePath)
|
||||
shutil.copyfile(self.desktopFile, self.startupFilePath)
|
||||
|
||||
# # Remove %u, etc. from Exec entry, because MATE will not replace them when it starts the app
|
||||
# item = MateDesktop.DesktopItem.new_from_uri(self.startupFilePath, MateDesktop.DesktopItemLoadFlags.ONLY_IF_EXISTS)
|
||||
# if item:
|
||||
# r = re.compile("%[A-Za-z]");
|
||||
# tmp = r.sub("", item.get_string(MateDesktop.DESKTOP_ITEM_EXEC)).strip()
|
||||
# item.set_string(MateDesktop.DESKTOP_ITEM_EXEC, tmp)
|
||||
# item.save(self.startupFilePath, 0)
|
||||
# Remove %u, etc. from Exec entry, because MATE will not replace them when it starts the app
|
||||
item = MateDesktop.DesktopItem.new_from_uri(self.startupFilePath, MateDesktop.DesktopItemLoadFlags.ONLY_IF_EXISTS)
|
||||
if item:
|
||||
r = re.compile("%[A-Za-z]")
|
||||
tmp = r.sub("", item.get_string(MateDesktop.DESKTOP_ITEM_EXEC)).strip()
|
||||
item.set_string(MateDesktop.DESKTOP_ITEM_EXEC, tmp)
|
||||
item.save(self.startupFilePath, 0)
|
||||
|
||||
# def removeFromStartup(self):
|
||||
# if os.path.exists(self.startupFilePath):
|
||||
# os.remove(self.startupFilePath)
|
||||
def removeFromStartup(self):
|
||||
if os.path.exists(self.startupFilePath):
|
||||
os.remove(self.startupFilePath)
|
||||
|
||||
# def addToFavourites(self):
|
||||
# favouritesDir = os.path.join(os.path.expanduser("~"), ".linuxmint", "mintMenu", "applications")
|
||||
# if not os.path.exists(favouritesDir):
|
||||
# os.makedirs(favouritesDir)
|
||||
def addToFavourites(self):
|
||||
favouritesDir = os.path.join(os.environ['HOME'], ".linuxmint/mintMenu/applications")
|
||||
if not os.path.exists(favouritesDir):
|
||||
os.makedirs(favouritesDir)
|
||||
|
||||
# shutil.copyfile(self.desktopFile, self.favouritesFilePath)
|
||||
shutil.copyfile(self.desktopFile, self.favouritesFilePath)
|
||||
|
||||
# def removeFromFavourites(self):
|
||||
# if os.path.exists(self.favouritesFilePath):
|
||||
# os.remove(self.favouritesFilePath)
|
||||
def removeFromFavourites(self):
|
||||
if os.path.exists(self.favouritesFilePath):
|
||||
os.remove(self.favouritesFilePath)
|
||||
|
||||
# def isInStartup(self):
|
||||
# #return self.inStartup
|
||||
# return os.path.exists(self.startupFilePath)
|
||||
def isInStartup(self):
|
||||
#return self.inStartup
|
||||
return os.path.exists(self.startupFilePath)
|
||||
|
||||
def onDestroy(self, widget):
|
||||
easyButton.onDestroy(self, widget)
|
||||
@ -439,10 +411,10 @@ class ApplicationLauncher(easyButton):
|
||||
def onDesktopEntryFileChanged(self):
|
||||
exists = False
|
||||
base = os.path.basename(self.desktopFile)
|
||||
for dir in self.appDirs:
|
||||
if os.path.exists(os.path.join(dir, base)):
|
||||
for directory in self.appDirs:
|
||||
if os.path.exists(os.path.join(directory, base)):
|
||||
# print os.path.join(dir, base), self.desktopFile
|
||||
self.loadDesktopEntry(xdg.DesktopEntry.DesktopEntry(os.path.join(dir, base)))
|
||||
self.loadDesktopEntry(xdg.DesktopEntry.DesktopEntry(os.path.join(directory, base)))
|
||||
for child in self.labelBox:
|
||||
child.destroy()
|
||||
|
||||
@ -468,7 +440,6 @@ class MenuApplicationLauncher(ApplicationLauncher):
|
||||
|
||||
ApplicationLauncher.__init__(self, desktopFile, iconSize)
|
||||
|
||||
|
||||
def filterCategory(self, category):
|
||||
if self.appCategory == category or category == "":
|
||||
self.show()
|
||||
@ -491,17 +462,16 @@ class MenuApplicationLauncher(ApplicationLauncher):
|
||||
#appComment = "<b>%s</b>" % (appComment);
|
||||
appName = "<b>%s</b>" % appName
|
||||
appComment = "<b>%s</b>" % appComment
|
||||
except Exception, detail:
|
||||
print detail
|
||||
pass
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
if self.showComment and self.appComment != "":
|
||||
if self.iconSize <= 2:
|
||||
self.addLabel('<span size="small">%s</span>' % appName)
|
||||
self.addLabel('<span size="x-small">%s</span>' % appComment)
|
||||
self.addLabel('<span size="small">%s</span>\n<span size="x-small">%s</span>' %
|
||||
(appName, appComment))
|
||||
else:
|
||||
self.addLabel(appName)
|
||||
self.addLabel('<span size="small">%s</span>' % appComment)
|
||||
self.addLabel('%s\n<span size="small">%s</span>' %
|
||||
(appName, appComment))
|
||||
else:
|
||||
self.addLabel(appName)
|
||||
|
||||
@ -548,12 +518,10 @@ class FavApplicationLauncher(ApplicationLauncher):
|
||||
|
||||
self.setupLabels()
|
||||
|
||||
|
||||
class CategoryButton(easyButton):
|
||||
|
||||
def __init__(self, iconName, iconSize, labels , f):
|
||||
easyButton.__init__(self, iconName, iconSize, labels)
|
||||
self.filter = f
|
||||
|
||||
|
||||
iconManager = IconManager()
|
||||
|
@ -37,6 +37,6 @@ def Execute(cmd , commandCwd=None, desktopFile=None):
|
||||
os.chdir(cwd)
|
||||
os.system(cmd + " &")
|
||||
return True
|
||||
except Exception as err:
|
||||
print err
|
||||
except Exception as e:
|
||||
print(e)
|
||||
return False
|
||||
|
@ -32,7 +32,7 @@ if hasInotify:
|
||||
mId = self.wm.add_watch(filename, mask, rec = True)[filename]
|
||||
if mId >= 0:
|
||||
self.callbacks[mId] = (callback, args)
|
||||
except Exception, detail:
|
||||
except:
|
||||
mId = 0
|
||||
return mId
|
||||
|
||||
@ -43,7 +43,7 @@ if hasInotify:
|
||||
|
||||
def fileChanged(self, event):
|
||||
if event.wd in self.callbacks:
|
||||
# print event.path
|
||||
#print event.path
|
||||
callback = self.callbacks[event.wd]
|
||||
if callback[1]:
|
||||
GLib.idle_add(callback[0], callback[1])
|
||||
|
@ -1,16 +1,27 @@
|
||||
#!/usr/bin/python2
|
||||
|
||||
import apt, sys
|
||||
import sys
|
||||
|
||||
try:
|
||||
cache = apt.Cache()
|
||||
for pkg in cache:
|
||||
if not pkg.is_installed:
|
||||
name = pkg.name
|
||||
summary = pkg.candidate.summary.capitalize()
|
||||
description = pkg.candidate.description.replace("\n", "~~~")
|
||||
print "CACHE" + "###" + str(name) + "###" + str(summary) + "###" + str(description)
|
||||
except Exception, detail:
|
||||
print "ERROR###ERROR###ERROR###ERROR"
|
||||
print detail
|
||||
import apt_pkg
|
||||
|
||||
if len(sys.argv) != 2:
|
||||
sys.exit(1)
|
||||
try:
|
||||
apt_pkg.init()
|
||||
cache = apt_pkg.Cache()
|
||||
package_records = apt_pkg.PackageRecords(cache)
|
||||
known_packages = set()
|
||||
with open(sys.argv[1], "w") as f:
|
||||
for pkg in cache.packages:
|
||||
if pkg.selected_state or not pkg.version_list or pkg.name in known_packages:
|
||||
continue
|
||||
name = pkg.name
|
||||
package_records.lookup(pkg.version_list.pop(0).translated_description.file_list.pop(0))
|
||||
summary = package_records.short_desc
|
||||
description = package_records.long_desc.replace(summary + "\n ", "").replace("\n .\n ", "~~~").replace("\n", "")
|
||||
f.write("CACHE###%s###%s###%s\n" % (name, summary, description))
|
||||
known_packages.add(name)
|
||||
except Exception as e:
|
||||
print("ERROR###ERROR###ERROR###ERROR")
|
||||
print(e)
|
||||
sys.exit(1)
|
||||
|
@ -1,11 +1,10 @@
|
||||
#!/usr/bin/python2
|
||||
|
||||
from glob import glob
|
||||
import gettext
|
||||
import os
|
||||
import string
|
||||
from glob import glob
|
||||
from urllib import unquote
|
||||
from user import home
|
||||
|
||||
import gi
|
||||
gi.require_version("Gtk", "3.0")
|
||||
@ -18,6 +17,7 @@ from plugins.execute import Execute
|
||||
|
||||
# i18n
|
||||
gettext.install("mintmenu", "/usr/share/linuxmint/locale")
|
||||
home = os.environ.get("HOME")
|
||||
|
||||
class pluginclass(object):
|
||||
|
||||
@ -173,8 +173,8 @@ class pluginclass(object):
|
||||
tmpdesktopDir = config['XDG_DESKTOP_DIR']
|
||||
if os.path.exists(os.path.expandvars(tmpdesktopDir)):
|
||||
desktopDir = tmpdesktopDir
|
||||
except Exception, detail:
|
||||
print detail
|
||||
except Exception as e:
|
||||
print(e)
|
||||
Button4 = easyButton("desktop", self.iconsize, [_("Desktop")], -1, -1)
|
||||
Button4.connect("clicked", self.ButtonClicked, "xdg-open \"" + desktopDir + "\"")
|
||||
Button4.show()
|
||||
|
@ -1,14 +1,15 @@
|
||||
#!/usr/bin/python2
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
import gi
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk, Pango
|
||||
from gi.repository import Gtk
|
||||
|
||||
from plugins.execute import Execute
|
||||
import plugins.recentHelper as RecentHelper
|
||||
from plugins.easygsettings import EasyGSettings
|
||||
from plugins.execute import Execute
|
||||
|
||||
|
||||
class pluginclass:
|
||||
@ -70,7 +71,7 @@ class pluginclass:
|
||||
self.builder.get_object("ClrBtn").connect("clicked", self.clrmenu)
|
||||
|
||||
def wake(self):
|
||||
pass
|
||||
return
|
||||
|
||||
def destroy(self):
|
||||
self.recentBox.destroy()
|
||||
@ -111,8 +112,6 @@ class pluginclass:
|
||||
|
||||
def RebuildPlugin(self):
|
||||
self.content_holder.set_size_request(self.recentw, self.recenth)
|
||||
# TODO
|
||||
print "recent.RebuildPlugin calling recent.DoRecent"
|
||||
self.DoRecent()
|
||||
|
||||
def DoRecent(self, *args, **kargs):
|
||||
@ -135,18 +134,13 @@ class pluginclass:
|
||||
self.AddRecentBtn(Name, self.IconList[loc])
|
||||
loc = loc + 1
|
||||
|
||||
# TODO
|
||||
print "recent.DoRecent calling RecentHelper.doRecentApps"
|
||||
RecentHelper.doRecentApps()
|
||||
|
||||
return True
|
||||
|
||||
def clrmenu(self, *args, **kargs):
|
||||
self.RecManagerInstance.purge_items()
|
||||
# TODO
|
||||
print "recent.clrmenu calling recent.DoRecent"
|
||||
self.DoRecent()
|
||||
return
|
||||
|
||||
def AddRecentBtn(self, Name, RecentImage):
|
||||
DispName=os.path.basename(Name)
|
||||
@ -166,7 +160,7 @@ class pluginclass:
|
||||
Box1.add(ButtonIcon)
|
||||
|
||||
Label1 = Gtk.Label(DispName)
|
||||
Label1.set_ellipsize(Pango.EllipsizeMode.END)
|
||||
Label1.set_ellipsize(3)
|
||||
Box1.add(Label1)
|
||||
|
||||
AButton.add(Box1)
|
||||
@ -174,27 +168,22 @@ class pluginclass:
|
||||
|
||||
self.recentBox.pack_start(AButton, False, True, 0)
|
||||
|
||||
def callback(self, widget, filename=None):
|
||||
def callback(self, widget, filename):
|
||||
self.Win.hide()
|
||||
|
||||
x = os.system("gvfs-open \""+filename+"\"")
|
||||
if x == 256:
|
||||
dia = Gtk.Dialog('File not found!',
|
||||
None, #the toplevel wgt of your app
|
||||
Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, #binary flags or'ed together
|
||||
("Ok", 77))
|
||||
dia.vbox.pack_start(Gtk.Label('The location or file could not be found!'), False, False, 0)
|
||||
dia.vbox.show_all()
|
||||
dia.show()
|
||||
result = dia.run()
|
||||
if result == 77:
|
||||
dia.destroy()
|
||||
try:
|
||||
subprocess.check_call(["xdg-open", filename])
|
||||
except subprocess.CalledProcessError:
|
||||
dialog = Gtk.MessageDialog(self.window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT,
|
||||
Gtk.MessageType.ERROR, Gtk.ButtonsType.OK, _("The file or location could not be opened."))
|
||||
dialog.set_title("mintMenu")
|
||||
dialog.run()
|
||||
dialog.destroy()
|
||||
|
||||
def GetRecent(self, *args, **kargs):
|
||||
FileString=[]
|
||||
IconString=[]
|
||||
RecentInfo=self.RecManagerInstance.get_items()
|
||||
# print RecentInfo[0].get_icon(Gtk.IconSize.MENU)
|
||||
count=0
|
||||
MaxEntries=self.numentries
|
||||
if self.numentries == -1:
|
||||
@ -205,7 +194,7 @@ class pluginclass:
|
||||
count+=1
|
||||
if count >= MaxEntries:
|
||||
break
|
||||
return FileString, IconString
|
||||
return FileString, IconString
|
||||
|
||||
def ButtonClicked(self, widget, event, Exec):
|
||||
self.press_x = event.x
|
||||
@ -225,7 +214,6 @@ class pluginclass:
|
||||
self.Win.plugins["applications"].wTree.get_widget("entry1").grab_focus()
|
||||
Execute(w, self.Exec)
|
||||
|
||||
# TODO - skipping this because we're already doing this on __init__
|
||||
# def do_plugin(self):
|
||||
# print "recent.do_plugin calling recent.DoRecent"
|
||||
# self.DoRecent()
|
||||
def do_plugin(self):
|
||||
return
|
||||
# self.DoRecent()
|
||||
|
@ -1,7 +1,6 @@
|
||||
#!/usr/bin/python2
|
||||
|
||||
import os
|
||||
from user import home
|
||||
|
||||
import gi
|
||||
gi.require_version("Gtk", "3.0")
|
||||
@ -9,7 +8,7 @@ from gi.repository import Gtk
|
||||
|
||||
from plugins.easybuttons import ApplicationLauncher
|
||||
|
||||
|
||||
home = os.environ.get("HOME")
|
||||
recentApps = []
|
||||
mintMenuWin = None
|
||||
recentAppBox = None
|
||||
@ -35,8 +34,8 @@ def recentAppsSave():
|
||||
else:
|
||||
recentAppListFile.write(recentApp.type + "\n")
|
||||
|
||||
except Exception, e:
|
||||
print e
|
||||
except Exception as 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()
|
||||
@ -74,18 +73,16 @@ def recentAppBuildLauncher(location):
|
||||
appButton.connect("clicked", applicationButtonClicked)
|
||||
appButton.type = "location"
|
||||
return appButton
|
||||
except Exception, e:
|
||||
print u"File in recentapp not found: '" + location + "'", e
|
||||
except Exception as e:
|
||||
print("File in recentapp not found: '%s': %s" % (location, e))
|
||||
|
||||
return None
|
||||
|
||||
def buildRecentApps():
|
||||
print "-- recentHelper.buildRecentApps"
|
||||
del recentApps[:]
|
||||
try:
|
||||
path = os.path.join(home, ".linuxmint/mintMenu/recentApplications.list")
|
||||
if not os.path.exists(path):
|
||||
print "does not exist"
|
||||
recentApplicationsList = []
|
||||
else:
|
||||
recentApplicationsList = open(path).readlines()
|
||||
@ -103,12 +100,11 @@ def buildRecentApps():
|
||||
|
||||
if appButton:
|
||||
recentApps.append(appButton)
|
||||
except Exception, e:
|
||||
print e
|
||||
except Exception as e:
|
||||
print(e)
|
||||
return recentApps
|
||||
|
||||
def doRecentApps():
|
||||
print "-- recentHelper.doRecentApps"
|
||||
if recentAppBox is not None:
|
||||
# recentAppBox is initiated by the recent plugin
|
||||
# only build UI widgets if it's enabled
|
||||
|
@ -66,7 +66,7 @@ class pluginclass(object):
|
||||
def destroy(self):
|
||||
self.settings.notifyRemoveAll()
|
||||
|
||||
def wake(self) :
|
||||
def wake(self):
|
||||
pass
|
||||
|
||||
def changePluginSize(self, settings, key, args):
|
||||
|
@ -66,7 +66,7 @@ class PointerMonitor(GObject.GObject, threading.Thread):
|
||||
else:
|
||||
self.display.allow_events(X.ReplayPointer, X.CurrentTime)
|
||||
except Exception as e:
|
||||
print "Unexpected error: " + str(e)
|
||||
print("Unexpected error:", e)
|
||||
|
||||
def stop(self):
|
||||
self.running = False
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 573 B |
60
usr/lib/linuxmint/mintMenu/search_engines/ddg.svg
Normal file
60
usr/lib/linuxmint/mintMenu/search_engines/ddg.svg
Normal file
@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 23.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 127 127" style="enable-background:new 0 0 127 127;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#DE5833;}
|
||||
.st1{fill:#FFFFFF;}
|
||||
.st2{fill-rule:evenodd;clip-rule:evenodd;fill:#FED30A;}
|
||||
.st3{fill:#2D4F8D;}
|
||||
.st4{fill:#D5D7D8;}
|
||||
.st5{fill:#67BD47;}
|
||||
.st6{fill:#43A347;}
|
||||
.st7{fill:#4C4C4C;}
|
||||
</style>
|
||||
<g>
|
||||
<g>
|
||||
<circle class="st0" cx="63.3" cy="63.3" r="60"/>
|
||||
<path class="st1" d="M114.1,41.8c-2.8-6.6-6.8-12.5-11.8-17.5c-5.1-5.1-11-9-17.5-11.8c-6.8-2.9-14-4.3-21.5-4.3
|
||||
s-14.7,1.5-21.5,4.3c-6.6,2.8-12.5,6.8-17.5,11.8c-5.1,5.1-9,11-11.8,17.5c-2.9,6.8-4.3,14-4.3,21.5c0,7.4,1.5,14.7,4.3,21.5
|
||||
c2.8,6.6,6.8,12.5,11.8,17.5c5.1,5.1,11,9,17.5,11.8c6.8,2.9,14,4.3,21.5,4.3s14.7-1.5,21.5-4.3c6.6-2.8,12.5-6.8,17.5-11.8
|
||||
c5.1-5.1,9-11,11.8-17.5c2.9-6.8,4.3-14,4.3-21.5C118.4,55.8,117,48.6,114.1,41.8z M75.3,112.8c-3.2-5.4-11.6-20.5-11.6-31.7
|
||||
c0-25.8,17.3-3.7,17.3-24.3c0-4.9-2.4-22.1-17.4-25.7c-3.7-4.9-12.4-9.6-26.2-7.7c0,0,2.3,0.7,4.9,2c0,0-5,0.7-5.2,4.1
|
||||
c0,0,9.9-0.5,15.5,1.3c-12.9,1.7-19.6,8.4-18.4,20.8c1.7,17.5,9.1,48.7,11.7,59.6c-19.6-7.1-33.7-25.9-33.7-48
|
||||
c0-28.1,22.8-51,51-51s51,22.8,51,51C114.2,87.3,97.6,107.4,75.3,112.8z"/>
|
||||
<path id="Beak_2_" class="st2" d="M60.5,71.6c0-6.6,9-8.7,12.4-8.7c9.2,0,22.2-5.9,25.4-5.8c3.3,0.1,5.4,1.4,5.4,2.9
|
||||
c0,2.2-18.4,10.5-25.5,9.8c-6.8-0.6-8.4,0.1-8.4,2.9c0,2.4,4.9,4.6,10.3,4.6c8.1,0,16-3.6,18.4-1.9c2.1,1.5-5.5,6.9-14.2,6.9
|
||||
S60.5,78.2,60.5,71.6z"/>
|
||||
<g>
|
||||
<path class="st3" d="M76.5,43.6c-2.4-3.1-6.7-3.2-8.2,0.4C70.6,42.2,73.4,41.8,76.5,43.6z"/>
|
||||
<path class="st3" d="M49.7,43.7c-3.3-2-8.8-2.2-8.5,4.1C42.9,43.9,45.1,43.2,49.7,43.7z"/>
|
||||
<path class="st3" d="M74.5,49.5c-1.8,0-3.3,1.5-3.3,3.3c0,1.8,1.5,3.3,3.3,3.3s3.3-1.5,3.3-3.3C77.8,51,76.3,49.5,74.5,49.5z
|
||||
M75.7,52.5c-0.5,0-1-0.4-1-1c0-0.5,0.4-1,1-1s1,0.4,1,1C76.6,52.1,76.2,52.5,75.7,52.5z"/>
|
||||
<path class="st3" d="M48.9,51.3c-2.1,0-3.8,1.7-3.8,3.8c0,2.1,1.7,3.8,3.8,3.8c2.1,0,3.8-1.7,3.8-3.8C52.7,53,51,51.3,48.9,51.3z
|
||||
M50.3,54.8c-0.6,0-1.1-0.5-1.1-1.1c0-0.6,0.5-1.1,1.1-1.1c0.6,0,1.1,0.5,1.1,1.1C51.4,54.3,50.9,54.8,50.3,54.8z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="st4" d="M40.6,35.1c-4.8,3.5-7,8.9-6.3,16.5c1.7,17.5,9.1,48.8,11.7,59.7c0.9,0.3,1.8,0.6,2.7,0.9
|
||||
c-1.6-6.6-9.3-38.8-12.7-63.5C35.1,42.1,37.6,38.2,40.6,35.1z"/>
|
||||
<path class="st4" d="M52.5,30.8c0.4,0,0.7-0.1,0.7-0.1c-5.2-2.5-13.4-2.6-15.6-2.6c-0.2,0.4-0.4,0.9-0.4,1.4
|
||||
C37.1,29.6,46.8,29,52.5,30.8z"/>
|
||||
<path class="st4" d="M43.1,25.4c-1.6-1.1-2.9-1.8-3.7-2.2c-0.7,0.1-1.3,0.1-2,0.2c0,0,2.3,0.7,4.9,2c0,0-0.1,0-0.2,0
|
||||
C42.7,25.4,43.1,25.4,43.1,25.4z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="st5" d="M83.4,91.9c-1.7-0.4-8.3,4.3-10.8,6.1c-0.1-0.5-0.2-0.9-0.3-1.1c-0.3-1-6.7-0.4-8.2,1.2
|
||||
c-4-1.9-12-5.6-12.1-3.3c-0.3,3,0,15.5,1.6,16.4c1.2,0.7,8-3,11.4-4.9c0,0,0,0,0.1,0c2.1,0.5,6,0,7.4-0.9
|
||||
c0.2-0.1,0.3-0.3,0.4-0.5c3.1,1.2,9.8,3.6,11.2,3.1C85.9,107.5,85.5,92.4,83.4,91.9z"/>
|
||||
<path class="st6" d="M65.1,106.3c-2.1-0.4-1.4-2.5-1.4-7.4c0,0,0,0,0,0c-0.5,0.3-0.9,0.7-0.9,1.1c0,4.9-0.8,7.1,1.4,7.4
|
||||
c2.1,0.5,6,0,7.6-0.9c0.3-0.2,0.4-0.5,0.5-1C70.8,106.4,67.1,106.8,65.1,106.3z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<path class="st7" d="M110.5,106.4c-0.9,0-1.7,0.7-1.7,1.6c0,0.9,0.7,1.7,1.7,1.7c0.9,0,1.7-0.7,1.7-1.7
|
||||
C112.2,107.2,111.5,106.4,110.5,106.4z M110.6,109.4c-0.7,0-1.3-0.6-1.3-1.3c0-0.7,0.5-1.3,1.3-1.3c0.7,0,1.3,0.6,1.3,1.3
|
||||
C111.8,108.8,111.3,109.4,110.6,109.4z"/>
|
||||
<path class="st7" d="M110.6,107.4c0.2,0,0.3,0.1,0.4,0.3l0.3-0.2c-0.1-0.2-0.4-0.5-0.7-0.5c-0.5,0-1,0.4-1,1c0,0.6,0.4,1,1,1
|
||||
c0.4,0,0.6-0.2,0.7-0.5l-0.3-0.2c-0.1,0.2-0.2,0.3-0.4,0.3c-0.3,0-0.6-0.3-0.6-0.6C110.1,107.7,110.3,107.4,110.6,107.4z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.8 KiB |
Binary file not shown.
Before Width: | Height: | Size: 733 B |
Binary file not shown.
Before Width: | Height: | Size: 443 B |
5
usr/lib/linuxmint/mintMenu/search_engines/wikipedia.svg
Normal file
5
usr/lib/linuxmint/mintMenu/search_engines/wikipedia.svg
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" stroke-miterlimit="10" style="shape-rendering:geometricPrecision; fill-rule:evenodd">
|
||||
<rect width="100%" height="100%" fill="white"/>
|
||||
<path d="M 120.85,29.21 C 120.85,29.62 120.72,29.99 120.47,30.33 C 120.21,30.66 119.94,30.83 119.63,30.83 C 117.14,31.07 115.09,31.87 113.51,33.24 C 111.92,34.6 110.29,37.21 108.6,41.05 L 82.8,99.19 C 82.63,99.73 82.16,100 81.38,100 C 80.77,100 80.3,99.73 79.96,99.19 L 65.49,68.93 L 48.85,99.19 C 48.51,99.73 48.04,100 47.43,100 C 46.69,100 46.2,99.73 45.96,99.19 L 20.61,41.05 C 19.03,37.44 17.36,34.92 15.6,33.49 C 13.85,32.06 11.4,31.17 8.27,30.83 C 8,30.83 7.74,30.69 7.51,30.4 C 7.27,30.12 7.15,29.79 7.15,29.42 C 7.15,28.47 7.42,28 7.96,28 C 10.22,28 12.58,28.1 15.05,28.3 C 17.34,28.51 19.5,28.61 21.52,28.61 C 23.58,28.61 26.01,28.51 28.81,28.3 C 31.74,28.1 34.34,28 36.6,28 C 37.14,28 37.41,28.47 37.41,29.42 C 37.41,30.36 37.24,30.83 36.91,30.83 C 34.65,31 32.87,31.58 31.57,32.55 C 30.27,33.53 29.62,34.81 29.62,36.4 C 29.62,37.21 29.89,38.22 30.43,39.43 L 51.38,86.74 L 63.27,64.28 L 52.19,41.05 C 50.2,36.91 48.56,34.23 47.28,33.03 C 46,31.84 44.06,31.1 41.46,30.83 C 41.22,30.83 41,30.69 40.78,30.4 C 40.56,30.12 40.45,29.79 40.45,29.42 C 40.45,28.47 40.68,28 41.16,28 C 43.42,28 45.49,28.1 47.38,28.3 C 49.2,28.51 51.14,28.61 53.2,28.61 C 55.22,28.61 57.36,28.51 59.62,28.3 C 61.95,28.1 64.24,28 66.5,28 C 67.04,28 67.31,28.47 67.31,29.42 C 67.31,30.36 67.15,30.83 66.81,30.83 C 62.29,31.14 60.03,32.42 60.03,34.68 C 60.03,35.69 60.55,37.26 61.6,39.38 L 68.93,54.26 L 76.22,40.65 C 77.23,38.73 77.74,37.11 77.74,35.79 C 77.74,32.69 75.48,31.04 70.96,30.83 C 70.55,30.83 70.35,30.36 70.35,29.42 C 70.35,29.08 70.45,28.76 70.65,28.46 C 70.86,28.15 71.06,28 71.26,28 C 72.88,28 74.87,28.1 77.23,28.3 C 79.49,28.51 81.35,28.61 82.8,28.61 C 83.84,28.61 85.38,28.52 87.4,28.35 C 89.96,28.12 92.11,28 93.83,28 C 94.23,28 94.43,28.4 94.43,29.21 C 94.43,30.29 94.06,30.83 93.32,30.83 C 90.69,31.1 88.57,31.83 86.97,33.01 C 85.37,34.19 83.37,36.87 80.98,41.05 L 71.26,59.02 L 84.42,85.83 L 103.85,40.65 C 104.52,39 104.86,37.48 104.86,36.1 C 104.86,32.79 102.6,31.04 98.08,30.83 C 97.67,30.83 97.47,30.36 97.47,29.42 C 97.47,28.47 97.77,28 98.38,28 C 100.03,28 101.99,28.1 104.25,28.3 C 106.34,28.51 108.1,28.61 109.51,28.61 C 111,28.61 112.72,28.51 114.67,28.3 C 116.7,28.1 118.52,28 120.14,28 C 120.61,28 120.85,28.4 120.85,29.21 z" />
|
||||
</svg>
|
After Width: | Height: | Size: 2.4 KiB |
Loading…
Reference in New Issue
Block a user