Compare commits
150 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
7c0bcbb5b7 | ||
|
f9325f2870 | ||
|
4ab8d2120c | ||
|
b0ab8320da | ||
|
a31731f127 | ||
|
2e0f503d08 | ||
|
3feda3af08 | ||
|
90ad278098 | ||
|
cf76c4837e | ||
|
d8820edd7d | ||
|
185b925b6b | ||
|
7c034738de | ||
|
c3bea70396 | ||
|
9976deca28 | ||
|
e4eab43d06 | ||
|
90688a9c9f | ||
|
63e9034896 | ||
|
d97d912a97 | ||
|
b08050dfbb | ||
|
772a10bb7a | ||
|
9b96af6602 | ||
|
905b9b1a94 | ||
|
94dec8415f | ||
|
57632a3e30 | ||
|
b807a89b68 | ||
|
645c941b0b | ||
|
30ef26afa0 | ||
|
380e23125c | ||
|
8342b85b91 | ||
|
23e3eb60df | ||
|
889771e8ae | ||
|
cbdc961115 | ||
|
9365cc4ce0 | ||
|
e948102e58 | ||
|
696603df34 | ||
|
0606afc825 | ||
|
a819d570eb | ||
|
b4f6cadcf0 | ||
|
8e1d467b78 | ||
|
ad479c18b5 | ||
|
9d56931ce0 | ||
|
1007793670 | ||
|
4d435b42f1 | ||
|
a2194beae8 | ||
|
4bbd037178 | ||
|
7a3532a395 | ||
|
ff93497459 | ||
|
6f69d0e499 | ||
|
d694deb65e | ||
|
e603bee1f3 | ||
|
3c8e638c01 | ||
|
d80c8b9fa4 | ||
|
7cded29c87 | ||
|
82345466e9 | ||
|
1c4c4dd365 | ||
|
52e82071b8 | ||
|
22ceb1f3e1 | ||
|
34356389c3 | ||
|
d4b1535685 | ||
|
3d31537da0 | ||
|
74bdad23cf | ||
|
01ae4b0f74 | ||
|
298719a911 | ||
|
cada2d72c1 | ||
|
3d38765734 | ||
|
f1c321d255 | ||
|
c6aef1bb28 | ||
|
210eaf0929 | ||
|
99797f3a40 | ||
|
703068ab65 | ||
|
69475bbb38 | ||
|
c02fc00522 | ||
|
6f7a4bf3a6 | ||
|
3173f6cc6b | ||
|
048b6c042c | ||
|
b7a1fa0b94 | ||
|
3ad195599b | ||
|
89f9071bd4 | ||
|
42ef09742a | ||
|
3170a2a6b9 | ||
|
b41e843aa0 | ||
|
3c45ca9c25 | ||
|
2419c9d36c | ||
|
d0d29936f7 | ||
|
b5f4789090 | ||
|
bc3c9078b6 | ||
|
7a3891647f | ||
|
a6ec1b3114 | ||
|
66f76df4d3 | ||
|
8ef7e15d19 | ||
|
ca78764c13 | ||
|
2a4267673d | ||
|
e2e4531380 | ||
|
476cf29d38 | ||
|
1984d57525 | ||
|
65c9c3e003 | ||
|
7fa91f721e | ||
|
c293d485d9 | ||
|
cd43e2e9b9 | ||
|
8988476df2 | ||
|
7b34063038 | ||
|
2e42cabf0a | ||
|
c2a0947dfd | ||
|
d5147caf9b | ||
|
35fd4cce15 | ||
|
7504a11bba | ||
|
37cd852738 | ||
|
4ee04c3869 | ||
|
8844d89cec | ||
|
d7ec861a4f | ||
|
33865c4dc9 | ||
|
3c6e384a1d | ||
|
d3ce506d45 | ||
|
2f1329de7d | ||
|
6f34ff8538 | ||
|
9e97c7d33b | ||
|
5520ad9d12 | ||
|
7442d496ec | ||
|
841bce86cb | ||
|
11f49ebe37 | ||
|
54e695b056 | ||
|
c2ddf199aa | ||
|
9f22254425 | ||
|
45faa83e52 | ||
|
ce03b1674d | ||
|
eab381470d | ||
|
66a9217da7 | ||
|
e374ee5e9f | ||
|
d64ffb9a94 | ||
|
018d67e1bb | ||
|
469eaf57e5 | ||
|
5f190ceac9 | ||
|
448299efb2 | ||
|
ed5a2b35fb | ||
|
73a412acea | ||
|
7e005b94ea | ||
|
de3aed33f8 | ||
|
8f00708252 | ||
|
ce675497d1 | ||
|
a082473a66 | ||
|
824efd26a9 | ||
|
54dd78bdf2 | ||
|
d6ebffa9b9 | ||
|
7e19123adc | ||
|
0d3702b716 | ||
|
1d739da691 | ||
|
27c4a837da | ||
|
1091f70df0 | ||
|
e7931f2956 | ||
|
bd2e150e6e |
debian
makepotmintmenu.pottestusr
bin
lib/linuxmint/mintMenu
applications.listcompile.pyicon.pngkeybinding.pymint-logo.svgmintMenu.pngmintMenu.pymintMenuConfig.glademintMenuConfig.py
plugins
__init__.pyapplications.pyeasybuttons.pyeasyfiles.pyeasygsettings.pyexecute.pyfilemonitor.pyget_apt_cache.pyplaces.pyrecent.pyrecentHelper.pysystem_management.py
pointerMonitor.pypopup-without-edit.xmlpreferences.pysearch_engines
share
glib-2.0/schemas
icons/hicolor/scalable/categories
linuxmint/mintmenu
341
debian/changelog
vendored
341
debian/changelog
vendored
@ -1,3 +1,344 @@
|
||||
mintmenu (6.1.7) victoria; urgency=medium
|
||||
|
||||
[ Michael Webster ]
|
||||
* Add our own 'all applications' icon for consistency.
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Mon, 26 Jun 2023 11:07:53 +0200
|
||||
|
||||
mintmenu (6.1.6) victoria; urgency=medium
|
||||
|
||||
[ Michael Webster ]
|
||||
* Use XAppGpuOffloadHelper for gpu offloading, respect PrefersNonDefaultGPU desktop entry key.
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Mon, 05 Jun 2023 13:40:15 +0100
|
||||
|
||||
mintmenu (6.1.5) vera; urgency=medium
|
||||
|
||||
[ monsta ]
|
||||
* remove mint-common dependency (#274)
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Mon, 21 Nov 2022 11:57:37 +0000
|
||||
|
||||
mintmenu (6.1.4) uma; urgency=medium
|
||||
|
||||
* Recent: Fix buttons layout
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Thu, 01 Jul 2021 13:39:07 +0100
|
||||
|
||||
mintmenu (6.1.3) uma; urgency=medium
|
||||
|
||||
[ Vincent Vermeulen ]
|
||||
* fix recently used documents sorting
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Fri, 25 Jun 2021 16:34:15 +0100
|
||||
|
||||
mintmenu (6.1.2) ulyssa; urgency=medium
|
||||
|
||||
[ Vincent Vermeulen ]
|
||||
* fix APT search
|
||||
|
||||
[ Clement Lefebvre ]
|
||||
* Favorites: Add a scrolledwindow (#263)
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Sat, 02 Jan 2021 22:21:33 +0000
|
||||
|
||||
mintmenu (6.1.1) ulyana; urgency=medium
|
||||
|
||||
[ Michael Webster ]
|
||||
* applications.py: Fix dnd for re-ordering/adding favorites.
|
||||
* recentHelper.py: Don't try to modify the recent list unless recents are enabled.
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Wed, 17 Jun 2020 16:30:48 +0100
|
||||
|
||||
mintmenu (6.1.0) ulyana; urgency=medium
|
||||
|
||||
[ Michael Webster ]
|
||||
* mintMenu.py: Refactor panel button construction to fix padding in different configurations.
|
||||
* gtk: Fix a couple of deprecations
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Wed, 10 Jun 2020 16:43:29 +0100
|
||||
|
||||
mintmenu (6.0.9) ulyana; urgency=medium
|
||||
|
||||
* Add missing dependency
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Wed, 10 Jun 2020 11:53:29 +0100
|
||||
|
||||
mintmenu (6.0.8) ulyana; urgency=medium
|
||||
|
||||
* Search: Fix searching for accentuated strings
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Wed, 10 Jun 2020 11:49:34 +0100
|
||||
|
||||
mintmenu (6.0.7) ulyana; urgency=medium
|
||||
|
||||
[ Michael Webster ]
|
||||
* Support nvidia on-demand app launching.
|
||||
|
||||
[ Clement Lefebvre ]
|
||||
* l10n: Update POT
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Thu, 14 May 2020 08:14:45 +0100
|
||||
|
||||
mintmenu (6.0.6) ulyana; urgency=medium
|
||||
|
||||
* Switch to symbolic panel icon
|
||||
* Remove applet text by default
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Fri, 24 Apr 2020 10:17:57 +0100
|
||||
|
||||
mintmenu (6.0.5) ulyana; urgency=medium
|
||||
|
||||
* Fix typo in file path
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Thu, 23 Apr 2020 11:43:51 +0100
|
||||
|
||||
mintmenu (6.0.4) ulyana; urgency=medium
|
||||
|
||||
[ Michael Webster ]
|
||||
* all: Use python3
|
||||
* Use gsettings for recent and favorite apps
|
||||
* recent.py: Allow the clear button to apply to whichever tab is currently active.
|
||||
* about dialog: Fix program name and use a license type.
|
||||
|
||||
[ Clement Lefebvre ]
|
||||
* Fix launching pkexec applications (#248)
|
||||
|
||||
[ Michael Webster ]
|
||||
* debian: Fix dependencies to require python3 variants.
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Fri, 03 Apr 2020 12:08:41 +0100
|
||||
|
||||
mintmenu (6.0.3) tricia; urgency=medium
|
||||
|
||||
* Prefer mozo over menulibre
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Tue, 10 Dec 2019 16:08:06 +0000
|
||||
|
||||
mintmenu (6.0.2) tricia; urgency=medium
|
||||
|
||||
* Preferences: Fix IconChooser argument
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Fri, 29 Nov 2019 12:01:48 +0000
|
||||
|
||||
mintmenu (6.0.1) tricia; urgency=medium
|
||||
|
||||
* Change default menu icon
|
||||
* Add menu icon selection
|
||||
* l10n: Update POT
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Tue, 19 Nov 2019 14:00:41 +0000
|
||||
|
||||
mintmenu (6.0.0) tricia; urgency=medium
|
||||
|
||||
* Fix blurry icon in HiDPI
|
||||
* Applet: Fix handling of symbolic icons
|
||||
* Applet: Fix changing the icon to a symbolic icon
|
||||
* Applet: Fix compatibility with symbolic pngs
|
||||
* Add missing dep on python-gi-cairo
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Wed, 13 Nov 2019 10:37:02 +0100
|
||||
|
||||
mintmenu (5.9.9) tina; urgency=medium
|
||||
|
||||
[ monsta ]
|
||||
* depend on gir1.2-matedesktop-2.0 instead of gir1.2-mate-desktop (#231)
|
||||
* plugins: fix number of callback arguments (#236)
|
||||
* depend on python3-xapp instead of python-xapp (#238)
|
||||
|
||||
[ Clement Lefebvre ]
|
||||
* RecentApp: Fix crash when location doesn't exist
|
||||
* Applications: Fix empty apps when a category has no icon
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Thu, 26 Sep 2019 10:09:57 +0100
|
||||
|
||||
mintmenu (5.9.8) tina; urgency=medium
|
||||
|
||||
* Don't depend on a menu editor
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Mon, 29 Jul 2019 12:24:03 +0200
|
||||
|
||||
mintmenu (5.9.7) tina; urgency=medium
|
||||
|
||||
* Add support for menulibre
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Tue, 23 Jul 2019 12:34:08 +0200
|
||||
|
||||
mintmenu (5.9.6) tina; urgency=medium
|
||||
|
||||
* Switch to symbolic icons
|
||||
* Fix crash on non-existing favorites
|
||||
* Remove support for custom colors
|
||||
* l10n: Update POT
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Mon, 22 Jul 2019 13:45:51 +0200
|
||||
|
||||
mintmenu (5.9.5) tina; urgency=medium
|
||||
|
||||
* Fix default favorites not being created
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Wed, 17 Jul 2019 15:49:20 +0200
|
||||
|
||||
mintmenu (5.9.4) tina; urgency=medium
|
||||
|
||||
* Packaging: Add dependency on python3-xlib
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Wed, 17 Jul 2019 11:38:44 +0200
|
||||
|
||||
mintmenu (5.9.3) tina; urgency=medium
|
||||
|
||||
* Applications: Port to GI MateMenu
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Fri, 05 Jul 2019 11:32:04 +0200
|
||||
|
||||
mintmenu (5.9.2) tina; urgency=medium
|
||||
|
||||
[ gm10 ]
|
||||
* Places: Don't hardcode file browser (#204)
|
||||
* Applications: Fix keypress event handler (#205)
|
||||
|
||||
[ Andrew ]
|
||||
* Fix broke running with "xdg-su" in exec field (#200)
|
||||
|
||||
[ gm10 ]
|
||||
* Assorted cleanup, fixes and performance improvements (#206)
|
||||
* keybinding: Remove left-over debug messages (#213)
|
||||
* Change makepot to parse .glade files (#210)
|
||||
* Clean up i18n, remove unnecessary duplication
|
||||
|
||||
[ Clement Lefebvre ]
|
||||
* Fix msgids and glade files
|
||||
|
||||
[ gm10 ]
|
||||
* Applications.py: Clean up more whitespace and line lengths
|
||||
* remove unused variables from favoritesBuildLauncher
|
||||
* Preferences: Fix deprecated alignment parameters (#219)
|
||||
* Applications: Remove Search label (#217)
|
||||
* Applications: Replace deprecated xpad/ypad with margin-XYZ parameters (#218)
|
||||
* Applications: Replace the deprecated icon for adding packages (#216)
|
||||
* Preferences: Change "recent documents" to "recently used applications and documents" plugin (#215)
|
||||
* Preferences: Normalize margins/alignment/layout between tabs (#220)
|
||||
|
||||
[ Clement Lefebvre ]
|
||||
* About: Fix the path for mintcommon's version.py
|
||||
* Inject the app version during the build
|
||||
* Configuration screen: Fix alignmnents and margins
|
||||
* Applications: Categories column always use natural width
|
||||
* Fix tooltips and make them optional, remove category tooltips in apps
|
||||
* Add option to show search bar on top
|
||||
* l10n: Update POT
|
||||
* Revamp preferences
|
||||
* Fix l10n
|
||||
* Recent: Move documents to the left
|
||||
* Remove obsolete code
|
||||
* Preferences: Fix support for low resolutions
|
||||
* Applet icon: Add support for icon names
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Sun, 30 Jun 2019 15:44:01 +0200
|
||||
|
||||
mintmenu (5.9.1) tessa; urgency=medium
|
||||
|
||||
* Change default menu icon
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Fri, 30 Nov 2018 20:17:38 +0000
|
||||
|
||||
mintmenu (5.9.0) tara; urgency=medium
|
||||
|
||||
* Packaging: Don't force dependency on MATE 1.18+
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Sun, 08 Jul 2018 16:00:34 +0200
|
||||
|
||||
mintmenu (5.8.9) tara; urgency=medium
|
||||
|
||||
* Fix RecentHelper spam in logs
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Fri, 08 Jun 2018 12:21:24 +0100
|
||||
|
||||
mintmenu (5.8.8) tara; urgency=medium
|
||||
|
||||
[ Victor Kareh ]
|
||||
* Support correct widget sizes for HiDPI displays
|
||||
* Fix menu positioning to account for multiple monitors (#24)
|
||||
|
||||
[ Clement Lefebvre ]
|
||||
* Don't set window decorations
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Thu, 31 May 2018 13:53:53 +0100
|
||||
|
||||
mintmenu (5.8.7) tara; urgency=medium
|
||||
|
||||
[ monsta ]
|
||||
* add missing deps on python-apt and python-configobj (#193)
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Wed, 30 May 2018 18:20:21 +0100
|
||||
|
||||
mintmenu (5.8.6) tara; urgency=medium
|
||||
|
||||
* Favorites: Remove pidgin, add pix, fix gnome-calculator..
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Tue, 15 May 2018 15:13:59 +0100
|
||||
|
||||
mintmenu (5.8.5) tara; urgency=medium
|
||||
|
||||
[ Vincent Vermeulen ]
|
||||
* safe apt search with shell escapes (#190)
|
||||
* Highlight previous search so typing overwrites it (#191)
|
||||
|
||||
[ Clement Lefebvre ]
|
||||
* mint-remove-application: Don't use gksu
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Mon, 07 May 2018 12:26:50 +0100
|
||||
|
||||
mintmenu (5.8.4) sylvia; urgency=medium
|
||||
|
||||
* Don't run mintinstall as root
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Sun, 12 Nov 2017 14:33:53 +0000
|
||||
|
||||
mintmenu (5.8.3) sylvia; urgency=medium
|
||||
|
||||
[ Leigh Scott ]
|
||||
* fix indent (#183)
|
||||
|
||||
[ wesdawg ]
|
||||
* Search updates (#185)
|
||||
|
||||
[ Hrotkó Gábor ]
|
||||
* Show recently used apps (#167)
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Sat, 11 Nov 2017 09:00:30 +0000
|
||||
|
||||
mintmenu (5.8.2) sonya; urgency=medium
|
||||
|
||||
* Recent: Expand plugin to fill empty space
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Tue, 27 Jun 2017 10:02:19 +0200
|
||||
|
||||
mintmenu (5.8.1) sonya; urgency=medium
|
||||
|
||||
[ monsta ]
|
||||
* applications: don't spam system log with system tools names (#177)
|
||||
|
||||
[ Clement Lefebvre ]
|
||||
* Add exception handling around pointer monitor
|
||||
* Add exception handling around keybinder
|
||||
|
||||
[ monsta ]
|
||||
* build: add build-dep on dh-python to fix build warning (#179)
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Mon, 12 Jun 2017 15:54:53 +0100
|
||||
|
||||
mintmenu (5.8.0) sonya; urgency=medium
|
||||
|
||||
[ Alexei Sorokin ]
|
||||
* Use the Gtk3 bookmarks location (#174)
|
||||
|
||||
[ Clement Lefebvre ]
|
||||
* Places: Explicitly import GLib
|
||||
* l10n: Update POT file
|
||||
|
||||
-- Clement Lefebvre <root@linuxmint.com> Sat, 06 May 2017 16:18:18 +0100
|
||||
|
||||
mintmenu (5.7.9) sonya; urgency=medium
|
||||
|
||||
[ monsta ]
|
||||
|
28
debian/control
vendored
28
debian/control
vendored
@ -2,23 +2,31 @@ Source: mintmenu
|
||||
Section: admin
|
||||
Priority: optional
|
||||
Maintainer: Clement Lefebvre <root@linuxmint.com>
|
||||
Build-Depends: debhelper (>= 9), python
|
||||
Build-Depends: debhelper (>= 9), python3, dh-python,
|
||||
Standards-Version: 3.9.5
|
||||
|
||||
Package: mintmenu
|
||||
Architecture: all
|
||||
Depends:
|
||||
${python:Depends},
|
||||
${misc:Depends},
|
||||
python (>= 2.4), python (<< 3),
|
||||
mint-common,
|
||||
python-mate-menu, python-xdg, xdg-utils,
|
||||
python-setproctitle,
|
||||
python3,
|
||||
python3-apt,
|
||||
python3-configobj,
|
||||
python3-gi-cairo,
|
||||
python3-setproctitle,
|
||||
python3-unidecode,
|
||||
python3-xlib,
|
||||
python3-xdg,
|
||||
python3-xapp,
|
||||
python3-xlib,
|
||||
xdg-utils,
|
||||
libglib2.0-bin,
|
||||
mate-menus,
|
||||
gvfs-bin,
|
||||
python-xlib,
|
||||
gir1.2-mate-panel (>= 1.18.0), gir1.2-gtk-3.0, gir1.2-mate-desktop (>= 1.18.0),
|
||||
mozo
|
||||
gir1.2-matemenu-2.0,
|
||||
gir1.2-matepanelapplet-4.0,
|
||||
gir1.2-gtk-3.0,
|
||||
gir1.2-matedesktop-2.0,
|
||||
gir1.2-xapp-1.0
|
||||
Description: Advanced MATE menu
|
||||
One of the most advanced menus under Linux. MintMenu supports filtering,
|
||||
favorites, easy-uninstallation, autosession, and many other features.
|
||||
|
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
|
||||
python3 -m compileall -qf /usr/lib/linuxmint/mintMenu/
|
||||
;;
|
||||
|
||||
abort-upgrade|abort-remove|abort-deconfigure)
|
||||
|
11
debian/rules
vendored
11
debian/rules
vendored
@ -1,4 +1,13 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
DEB_VERSION := $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ')
|
||||
|
||||
%:
|
||||
dh ${@} --with python2
|
||||
dh ${@} --with-python3
|
||||
|
||||
# Inject version number in the code
|
||||
override_dh_installdeb:
|
||||
dh_installdeb
|
||||
for pkg in $$(dh_listpackages -i); do \
|
||||
find debian/$$pkg -type f -exec sed -i -e s/__DEB_VERSION__/$(DEB_VERSION)/g {} +; \
|
||||
done
|
||||
|
10
makepot
10
makepot
@ -1,4 +1,12 @@
|
||||
#!/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
|
||||
intltool-extract --type=gettext/glade usr/share/linuxmint/mintmenu/applications.ui
|
||||
intltool-extract --type=gettext/glade usr/share/linuxmint/mintmenu/main.ui
|
||||
intltool-extract --type=gettext/glade usr/share/linuxmint/mintmenu/places.ui
|
||||
intltool-extract --type=gettext/glade usr/share/linuxmint/mintmenu/preferences.ui
|
||||
intltool-extract --type=gettext/glade usr/share/linuxmint/mintmenu/recent.ui
|
||||
intltool-extract --type=gettext/glade usr/share/linuxmint/mintmenu/system.ui
|
||||
|
||||
xgettext --language=Python --keyword=_ --keyword=N_ --output=mintmenu.pot usr/lib/linuxmint/mintMenu/*.py usr/lib/linuxmint/mintMenu/plugins/*.py usr/share/linuxmint/mintmenu/*.ui.h
|
||||
|
||||
rm -rf usr/share/linuxmint/mintmenu/*.ui.h
|
||||
|
858
mintmenu.pot
858
mintmenu.pot
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-11-23 15:36+0000\n"
|
||||
"POT-Creation-Date: 2020-05-14 08:12+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -17,532 +17,574 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenu.py:48
|
||||
msgid "Menu"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenu.py:247
|
||||
msgid "Couldn't load plugin:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenu.py:319
|
||||
msgid "Couldn't initialize plugin"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenu.py:727
|
||||
msgid "Advanced MATE Menu"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenu.py:815
|
||||
msgid "Preferences"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenu.py:818
|
||||
msgid "Edit menu"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenu.py:821
|
||||
msgid "Reload plugins"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenu.py:824
|
||||
msgid "About"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:42
|
||||
msgid "Menu preferences"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:45
|
||||
msgid "Always start with favorites pane"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:46
|
||||
msgid "Show button icon"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:47
|
||||
msgid "Enable Internet search"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:48
|
||||
msgid "Use custom colors"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:49
|
||||
msgid "Show recent documents plugin"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:50
|
||||
msgid "Show applications plugin"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:51
|
||||
msgid "Show system plugin"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:52
|
||||
msgid "Show places plugin"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:54
|
||||
msgid "Show application comments"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:55
|
||||
msgid "Show category icons"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:56
|
||||
msgid "Hover"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:57
|
||||
msgid "Remember the last category or search"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:58
|
||||
msgid "Search for packages to install"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:59
|
||||
msgid "Swap name and generic name"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:61
|
||||
msgid "Border width:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:62
|
||||
msgid "pixels"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:64
|
||||
msgid "Button text:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:65
|
||||
msgid "Options"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:66
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:203
|
||||
msgid "Applications"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:68
|
||||
msgid "Theme"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:69
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:200
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:201
|
||||
msgid "Favorites"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:70
|
||||
msgid "Main button"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:71
|
||||
msgid "Plugins"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:73
|
||||
msgid "Background:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:74
|
||||
msgid "Headings:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:75
|
||||
msgid "Borders:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:76
|
||||
msgid "Theme:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:80
|
||||
msgid "Number of columns:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:81
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:82
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:83
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:84
|
||||
msgid "Icon size:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:85
|
||||
msgid "Hover delay (ms):"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:86
|
||||
msgid "Button icon:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:87
|
||||
msgid "Search command:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:89
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:44
|
||||
msgid "Places"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:90
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:102
|
||||
msgid "Allow Scrollbar"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:91
|
||||
msgid "Show GTK Bookmarks"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:92
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:103
|
||||
msgid "Height:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:93
|
||||
msgid "Toggle Default Places:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:94
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:141
|
||||
msgid "Computer"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:95
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:151
|
||||
msgid "Home Folder"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:96
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:164
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:166
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:97
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:188
|
||||
msgid "Desktop"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:98
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:198
|
||||
msgid "Trash"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:99
|
||||
msgid "Custom Places:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:101
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:40
|
||||
msgid "System"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:104
|
||||
msgid "Toggle Default Items:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:105
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:136
|
||||
msgid "Software Manager"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:106
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:143
|
||||
msgid "Package Manager"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:107
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:150
|
||||
msgid "Control Center"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:108
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:160
|
||||
msgid "Terminal"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:109
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:177
|
||||
msgid "Lock Screen"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:110
|
||||
msgid "Log Out"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:111
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:194
|
||||
msgid "Quit"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:113
|
||||
msgid "Edit Place"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:114
|
||||
msgid "New Place"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:115
|
||||
msgid "Select a folder"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:145
|
||||
msgid "Keyboard shortcut:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:151
|
||||
msgid "Images"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:269
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:270
|
||||
msgid "Path"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:285
|
||||
msgid "Desktop theme"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:434
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:465
|
||||
msgid "Name:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:435
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenuConfig.py:466
|
||||
msgid "Path:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/keybinding.py:199
|
||||
#: usr/lib/linuxmint/mintMenu/keybinding.py:168
|
||||
msgid "Click to set a new accelerator key for opening and closing the menu. "
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/keybinding.py:200
|
||||
#: usr/lib/linuxmint/mintMenu/keybinding.py:169
|
||||
msgid "Press Escape or click again to cancel the operation. "
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/keybinding.py:201
|
||||
#: usr/lib/linuxmint/mintMenu/keybinding.py:170
|
||||
msgid "Press Backspace to clear the existing keybinding."
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/keybinding.py:214
|
||||
#: usr/lib/linuxmint/mintMenu/keybinding.py:182
|
||||
msgid "Pick an accelerator"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/keybinding.py:267
|
||||
#: usr/lib/linuxmint/mintMenu/keybinding.py:234
|
||||
msgid "<not set>"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/recent.py:31
|
||||
msgid "Recent documents"
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenu.py:34
|
||||
msgid "Menu"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:198
|
||||
msgid "Search:"
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenu.py:153
|
||||
msgid "Couldn't load plugin:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:202
|
||||
msgid "All applications"
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenu.py:212
|
||||
msgid "Couldn't initialize plugin"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:595
|
||||
#, python-format
|
||||
msgid "Search DuckDuckGo for %s"
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenu.py:587
|
||||
msgid "Advanced MATE Menu"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:602
|
||||
#, python-format
|
||||
msgid "Search Wikipedia for %s"
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenu.py:698
|
||||
msgid "Preferences"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:618
|
||||
#, python-format
|
||||
msgid "Lookup %s in Dictionary"
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenu.py:702
|
||||
msgid "Edit menu"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenu.py:706
|
||||
msgid "Reload plugins"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/mintMenu.py:709
|
||||
msgid "About"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:24
|
||||
msgid "Custom Place"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:35
|
||||
msgid "Name:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:39
|
||||
msgid "Select a folder"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:41
|
||||
msgid "Folder:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:60
|
||||
msgid "Menu preferences"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:67
|
||||
msgid "Menu button"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:67
|
||||
msgid "Applet button in the panel"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:68
|
||||
msgid "Show button icon"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:69
|
||||
msgid "Button text"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:71
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:74
|
||||
msgid "Menu icons"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:73
|
||||
msgid "Button icon"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:80
|
||||
msgid "Keyboard shortcut"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:86
|
||||
msgid "Options"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:86
|
||||
msgid "General applet options"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:87
|
||||
msgid "Show system management"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:90
|
||||
msgid "Show places"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:93
|
||||
msgid "Show recently used documents and applications"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:97
|
||||
msgid "Show tooltips"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:101
|
||||
msgid "Theme"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:101
|
||||
msgid "Custom theme selection"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:103
|
||||
msgid "Desktop theme"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:113
|
||||
msgid "Theme:"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:115
|
||||
msgid "Icon sizes"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:115
|
||||
msgid "The size of the icons"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:116
|
||||
#: usr/share/linuxmint/mintmenu/applications.ui.h:1
|
||||
#: usr/share/linuxmint/mintmenu/preferences.ui.h:3
|
||||
msgid "Favorites"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:117
|
||||
#: usr/share/linuxmint/mintmenu/applications.ui.h:3
|
||||
#: usr/share/linuxmint/mintmenu/preferences.ui.h:4
|
||||
#: usr/share/linuxmint/mintmenu/recent.ui.h:2
|
||||
msgid "Applications"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:118
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:41
|
||||
#: usr/share/linuxmint/mintmenu/preferences.ui.h:5
|
||||
msgid "System"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:119
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:46
|
||||
#: usr/share/linuxmint/mintmenu/preferences.ui.h:6
|
||||
msgid "Places"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:124
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:142
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:150
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:166
|
||||
msgid "Layout"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:124
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:142
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:150
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:166
|
||||
msgid "Section layout"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:125
|
||||
msgid "Show search bar on top"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:126
|
||||
msgid "Show applications comments"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:128
|
||||
msgid "Categories"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:128
|
||||
msgid "Applications categories"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:129
|
||||
msgid "Show category icons"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:130
|
||||
msgid "Switch categories on hover"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:131
|
||||
msgid "Hover delay"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:131
|
||||
msgid "milliseconds"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:133
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:133
|
||||
msgid "Search options"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:134
|
||||
msgid "Search for packages to install"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:135
|
||||
msgid "Remember the last category or search"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:136
|
||||
msgid "Enable Internet search"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:137
|
||||
msgid "Search command"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:143
|
||||
msgid "Number of columns"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:144
|
||||
msgid "Swap name and generic name"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:145
|
||||
msgid "Show favorites when the menu is open"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:151
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:167
|
||||
msgid "Custom height"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:152
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:168
|
||||
msgid "Height"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:154
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:170
|
||||
msgid "Items"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:154
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:170
|
||||
msgid "Toggle default items"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:155
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:147
|
||||
msgid "Software Manager"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:156
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:154
|
||||
msgid "Package Manager"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:157
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:161
|
||||
msgid "Control Center"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:158
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:168
|
||||
msgid "Terminal"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:159
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:178
|
||||
msgid "Lock Screen"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:160
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:185
|
||||
msgid "Logout"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:161
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:192
|
||||
msgid "Quit"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:171
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:137
|
||||
msgid "Computer"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:172
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:144
|
||||
msgid "Home Folder"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:173
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:154
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:156
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:174
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:175
|
||||
msgid "Desktop"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:175
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:182
|
||||
msgid "Trash"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:176
|
||||
msgid "GTK Bookmarks"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:178
|
||||
msgid "Custom places"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:178
|
||||
msgid "You can add your own places in the menu"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:193
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/preferences.py:194
|
||||
msgid "Path"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:625
|
||||
#, python-format
|
||||
msgid "Search DuckDuckGo for %s"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:627
|
||||
#, python-format
|
||||
msgid "Search Wikipedia for %s"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:630
|
||||
#, python-format
|
||||
msgid "Lookup %s in Dictionary"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:632
|
||||
#, python-format
|
||||
msgid "Search Computer for %s"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:703
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:756
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:690
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:732
|
||||
#, python-format
|
||||
msgid "Install package '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:890
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:960
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:836
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:911
|
||||
msgid "Add to desktop"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:891
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:961
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:837
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:912
|
||||
msgid "Add to panel"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:893
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:942
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:839
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:889
|
||||
msgid "Insert space"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:894
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:943
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:840
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:890
|
||||
msgid "Insert separator"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:896
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:964
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:842
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:915
|
||||
msgid "Launch when I log in"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:898
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:966
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:844
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:917
|
||||
msgid "Launch"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:899
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:845
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:918
|
||||
msgid "Run with NVIDIA GPU"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:846
|
||||
msgid "Remove from favorites"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:901
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:970
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:848
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:922
|
||||
msgid "Edit properties"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:941
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:888
|
||||
msgid "Remove"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:963
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:914
|
||||
msgid "Show in my favorites"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:967
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:919
|
||||
msgid "Uninstall"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:968
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:920
|
||||
msgid "Delete from menu"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:1025
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:988
|
||||
msgid "Search DuckDuckGo"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:1032
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:989
|
||||
msgid "Search Wikipedia"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:1042
|
||||
msgid "Lookup Dictionary"
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:991
|
||||
msgid "Search Dictionary"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:1049
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:992
|
||||
msgid "Search Computer"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:1059
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:994
|
||||
msgid "Find Software"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:1066
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:995
|
||||
msgid "Find Tutorials"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:1073
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:996
|
||||
msgid "Find Hardware"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:1080
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:997
|
||||
msgid "Find Ideas"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:1087
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:998
|
||||
msgid "Find Users"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:1547
|
||||
msgid ""
|
||||
"Couldn't save favorites. Check if you have write access to ~/.linuxmint/"
|
||||
"mintMenu"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:1758
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:1642
|
||||
msgid "All"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:1758
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:1644
|
||||
msgid "Show all applications"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:140
|
||||
msgid "Browse and install available software"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:147
|
||||
msgid "Install, remove and upgrade software packages"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:157
|
||||
msgid "Configure your system"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:167
|
||||
msgid "Use the command line"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:170
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:187
|
||||
msgid "Logout"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:174
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:191
|
||||
msgid "Log out or switch user"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:184
|
||||
msgid "Requires password to unlock"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:198
|
||||
msgid "Shutdown, restart, suspend or hibernate"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:148
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:141
|
||||
msgid ""
|
||||
"Browse all local and remote disks and folders accessible from this computer"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:158
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:148
|
||||
msgid "Open your personal folder"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:173
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:160
|
||||
msgid "Browse bookmarked and local network locations"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:195
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:179
|
||||
msgid "Browse items placed on the desktop"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:209
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:189
|
||||
msgid "Browse deleted files"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:261
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/places.py:238
|
||||
msgid "Empty trash"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/recent.py:41
|
||||
msgid "Recently used"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/recent.py:192
|
||||
msgid "The file or location could not be opened."
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:151
|
||||
msgid "Browse and install available software"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:158
|
||||
msgid "Install, remove and upgrade software packages"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:165
|
||||
msgid "Configure your system"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:175
|
||||
msgid "Use the command line"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:182
|
||||
msgid "Requires password to unlock"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:189
|
||||
msgid "Log out or switch user"
|
||||
msgstr ""
|
||||
|
||||
#: usr/lib/linuxmint/mintMenu/plugins/system_management.py:196
|
||||
msgid "Shutdown, restart, suspend or hibernate"
|
||||
msgstr ""
|
||||
|
||||
#: usr/share/linuxmint/mintmenu/applications.ui.h:2
|
||||
msgid "All applications"
|
||||
msgstr ""
|
||||
|
||||
#: usr/share/linuxmint/mintmenu/applications.ui.h:4
|
||||
msgid "Show additional search options"
|
||||
msgstr ""
|
||||
|
||||
#: usr/share/linuxmint/mintmenu/preferences.ui.h:1
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#: usr/share/linuxmint/mintmenu/preferences.ui.h:2
|
||||
msgid "Appearance"
|
||||
msgstr ""
|
||||
|
||||
#: usr/share/linuxmint/mintmenu/preferences.ui.h:7
|
||||
msgid "Default"
|
||||
msgstr ""
|
||||
|
||||
#: usr/share/linuxmint/mintmenu/recent.ui.h:1
|
||||
msgid "Documents"
|
||||
msgstr ""
|
||||
|
2
test
2
test
@ -4,6 +4,8 @@ sudo rm -rf /usr/lib/linuxmint/mintMenu
|
||||
sudo cp -R usr /
|
||||
sudo glib-compile-schemas /usr/share/glib-2.0/schemas
|
||||
|
||||
killall -q mintmenu
|
||||
|
||||
mate-terminal --maximize -e /usr/lib/linuxmint/mintMenu/mintMenu.py
|
||||
|
||||
mate-panel-test-applets --iid MintMenuAppletFactory::MintMenuApplet
|
||||
|
@ -1,13 +1,13 @@
|
||||
#!/usr/bin/python2
|
||||
#!/usr/bin/python3
|
||||
|
||||
import sys, os
|
||||
|
||||
if len(sys.argv) > 1:
|
||||
if (sys.argv[1] in ["help", "h", "-?", "--help", "-h", "?"]):
|
||||
print "mintMenu - the advanced MATE menu\n"
|
||||
print "options:"
|
||||
print " [--]help, [-]h Display this help."
|
||||
print " [--]clean, [--]clear, [--]reset Restore settings to default.\n"
|
||||
print("mintMenu - the advanced MATE menu\n")
|
||||
print("options:")
|
||||
print(" [--]help, [-]h Display this help.")
|
||||
print(" [--]clean, [--]clear, [--]reset Restore settings to default.\n")
|
||||
elif (sys.argv[1] in ["clean", "clear", "reset", "--clean", "--clear", "--reset"]):
|
||||
os.system("gsettings reset-recursively com.linuxmint.mintmenu")
|
||||
os.system("gsettings reset-recursively com.linuxmint.mintmenu.plugins.places")
|
||||
@ -15,6 +15,6 @@ if len(sys.argv) > 1:
|
||||
os.system("gsettings reset-recursively com.linuxmint.mintmenu.plugins.recent")
|
||||
os.system("gsettings reset-recursively com.linuxmint.mintmenu.plugins.system_management")
|
||||
os.system("rm -rf ~/.linuxmint/mintMenu")
|
||||
print "All mintMenu settings are now restored to default"
|
||||
print("All mintMenu settings are now restored to default")
|
||||
else:
|
||||
os.system("/usr/lib/linuxmint/mintMenu/mintMenu.py")
|
||||
|
@ -1,11 +1,11 @@
|
||||
location:/usr/share/applications/firefox.desktop
|
||||
location:/usr/share/applications/thunderbird.desktop
|
||||
location:/usr/share/applications/pidgin.desktop
|
||||
location:/usr/share/applications/banshee.desktop
|
||||
location:/usr/share/applications/pix.desktop
|
||||
location:/usr/share/applications/rhythmbox.desktop
|
||||
separator
|
||||
location:/usr/share/applications/gnome-calculator.desktop
|
||||
location:/usr/share/applications/gcalctool.desktop
|
||||
location:/usr/share/applications/org.gnome.Calculator.desktop
|
||||
location:/usr/share/applications/xed.desktop
|
||||
location:/usr/share/applications/mate-terminal.desktop
|
||||
location:/usr/share/applications/gnome-terminal.desktop
|
||||
|
@ -1,6 +0,0 @@
|
||||
#!/usr/bin/python2
|
||||
|
||||
import compileall
|
||||
|
||||
compileall.compile_dir(".", force=1)
|
||||
|
Binary file not shown.
Before ![]() (image error) Size: 1.0 KiB |
@ -1,36 +1,37 @@
|
||||
#!/usr/bin/python2
|
||||
#!/usr/bin/python3
|
||||
|
||||
# -*- coding: utf-8; -*-
|
||||
# Copyright (C) 2013 Ozcan Esen <ozcanesen@gmail.com>
|
||||
# Copyright (C) 2008 Luca Bruno <lethalman88@gmail.com>
|
||||
#
|
||||
# This a slightly modified version of the globalkeybinding.py file which is part of FreeSpeak.
|
||||
#
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
# DEALINGS IN THE SOFTWARE.
|
||||
|
||||
import threading
|
||||
|
||||
import gi
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk, Gdk, GLib, GObject
|
||||
|
||||
from Xlib.display import Display
|
||||
from Xlib import X, error
|
||||
from gi.repository import Gtk, Gdk, GdkX11, GObject, GLib
|
||||
import threading
|
||||
from Xlib.display import Display
|
||||
|
||||
SPECIAL_MODS = (["Super_L", "<Super>"],
|
||||
["Super_R", "<Super>"],
|
||||
@ -62,8 +63,8 @@ class GlobalKeyBinding(GObject.GObject, threading.Thread):
|
||||
|
||||
def map_modifiers(self):
|
||||
gdk_modifiers =(Gdk.ModifierType.CONTROL_MASK, Gdk.ModifierType.SHIFT_MASK, Gdk.ModifierType.MOD1_MASK,
|
||||
Gdk.ModifierType.MOD2_MASK, Gdk.ModifierType.MOD3_MASK, Gdk.ModifierType.MOD4_MASK, Gdk.ModifierType.MOD5_MASK,
|
||||
Gdk.ModifierType.SUPER_MASK, Gdk.ModifierType.HYPER_MASK)
|
||||
Gdk.ModifierType.MOD2_MASK, Gdk.ModifierType.MOD3_MASK, Gdk.ModifierType.MOD4_MASK, Gdk.ModifierType.MOD5_MASK,
|
||||
Gdk.ModifierType.SUPER_MASK, Gdk.ModifierType.HYPER_MASK)
|
||||
self.known_modifiers_mask = 0
|
||||
for modifier in gdk_modifiers:
|
||||
if "Mod" not in Gtk.accelerator_name(0, modifier) or "Mod4" in Gtk.accelerator_name(0, modifier):
|
||||
@ -100,14 +101,14 @@ class GlobalKeyBinding(GObject.GObject, threading.Thread):
|
||||
def ungrab(self):
|
||||
if self.keycode:
|
||||
self.window.ungrab_key(self.keycode, X.AnyModifier, self.window)
|
||||
|
||||
|
||||
def rebind(self, key):
|
||||
self.ungrab()
|
||||
if key != "":
|
||||
self.grab(key)
|
||||
else:
|
||||
self.keytext = ""
|
||||
|
||||
|
||||
def set_focus_window(self, window = None):
|
||||
self.ungrab()
|
||||
if window is None:
|
||||
@ -117,7 +118,7 @@ class GlobalKeyBinding(GObject.GObject, threading.Thread):
|
||||
self.grab(self.keytext)
|
||||
|
||||
def get_mask_combinations(self, mask):
|
||||
return [x for x in xrange(mask+1) if not (x & ~mask)]
|
||||
return [x for x in range(mask+1) if not (x & ~mask)]
|
||||
|
||||
def idle(self):
|
||||
self.emit("activate")
|
||||
@ -161,19 +162,14 @@ class KeybindingWidget(Gtk.Box):
|
||||
__gsignals__ = {
|
||||
'accel-edited': (GObject.SignalFlags.RUN_LAST, None, ()),
|
||||
}
|
||||
def __init__(self, desc):
|
||||
def __init__(self):
|
||||
super(KeybindingWidget, self).__init__()
|
||||
self.desc = desc
|
||||
self.label = Gtk.Label(desc)
|
||||
if self.desc != "":
|
||||
self.pack_start(self.label, False, False, 0)
|
||||
self.button = Gtk.Button()
|
||||
self.button.set_tooltip_text(_("Click to set a new accelerator key for opening and closing the menu. ") +
|
||||
_("Press Escape or click again to cancel the operation. ") +
|
||||
_("Press Backspace to clear the existing keybinding."))
|
||||
self.button.connect("clicked", self.clicked)
|
||||
self.button.set_size_request(200, -1)
|
||||
self.pack_start(self.button, False, False, 4)
|
||||
self.pack_start(self.button, True, True, 0)
|
||||
|
||||
self.show_all()
|
||||
self.event_id = None
|
||||
|
@ -1,613 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="1024"
|
||||
height="768"
|
||||
id="svg2619"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46"
|
||||
sodipodi:docbase="/Users/carlosporto/Desktop"
|
||||
sodipodi:docname="mint-logo-alone.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
inkscape:export-filename="/home/carlos/Desktop/logo-grey-bg.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90"
|
||||
version="1.0"
|
||||
sodipodi:modified="true">
|
||||
<defs
|
||||
id="defs2621">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 384 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="1024 : 384 : 1"
|
||||
inkscape:persp3d-origin="512 : 256 : 1"
|
||||
id="perspective277" />
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter4135">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.74662361"
|
||||
id="feGaussianBlur4137" />
|
||||
</filter>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter4006">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="1.6495597"
|
||||
id="feGaussianBlur4008" />
|
||||
</filter>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3312"
|
||||
id="linearGradient3538"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.091261,0,0,1.091261,79.238251,-55.750939)"
|
||||
x1="61.42857"
|
||||
y1="362.14285"
|
||||
x2="116.42857"
|
||||
y2="408.57144" />
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3573">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="1.6284922"
|
||||
id="feGaussianBlur3575" />
|
||||
</filter>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3469">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="2.7119931"
|
||||
id="feGaussianBlur3471" />
|
||||
</filter>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3965">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="2.4743396"
|
||||
id="feGaussianBlur3967" />
|
||||
</filter>
|
||||
<pattern
|
||||
inkscape:collect="always"
|
||||
xlink:href="#pattern4481"
|
||||
id="pattern4486"
|
||||
patternTransform="matrix(0.4295427,0,0,0.4295427,-4.3554687e-6,-4.3457032e-7)" />
|
||||
<pattern
|
||||
inkscape:collect="always"
|
||||
xlink:href="#pattern4467"
|
||||
id="pattern4481"
|
||||
patternTransform="matrix(0.4295427,0,0,0.4295427,-130.66779,-129.37468)" />
|
||||
<linearGradient
|
||||
id="linearGradient3588">
|
||||
<stop
|
||||
style="stop-color:#bfe699;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3590" />
|
||||
<stop
|
||||
style="stop-color:#313e24;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3592" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3570">
|
||||
<stop
|
||||
id="stop3572"
|
||||
offset="0"
|
||||
style="stop-color:#e5ffcb;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop3574"
|
||||
offset="1"
|
||||
style="stop-color:#bfff80;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3303">
|
||||
<stop
|
||||
style="stop-color:#bfff80;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3305" />
|
||||
<stop
|
||||
style="stop-color:#6a8b4a;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3307" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3431">
|
||||
<stop
|
||||
id="stop3433"
|
||||
offset="0"
|
||||
style="stop-color:#3d3d3d;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop3435"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0.11400651;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3349">
|
||||
<stop
|
||||
style="stop-color:#d3d3d3;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3351" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3353" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3312">
|
||||
<stop
|
||||
style="stop-color:#c7f994;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3314" />
|
||||
<stop
|
||||
style="stop-color:#87cf3e;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3316" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3312"
|
||||
id="linearGradient3335"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="61.42857"
|
||||
y1="362.14285"
|
||||
x2="116.42857"
|
||||
y2="408.57144" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3349"
|
||||
id="linearGradient3374"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="140.66374"
|
||||
y1="424.33243"
|
||||
x2="67.175148"
|
||||
y2="348.57098" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3312"
|
||||
id="linearGradient3377"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="61.42857"
|
||||
y1="362.14285"
|
||||
x2="116.42857"
|
||||
y2="408.57144"
|
||||
gradientTransform="translate(0,-9.49911)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3312"
|
||||
id="linearGradient3398"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,-9.49911)"
|
||||
x1="61.42857"
|
||||
y1="362.14285"
|
||||
x2="116.42857"
|
||||
y2="408.57144" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3349"
|
||||
id="linearGradient3400"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="140.66374"
|
||||
y1="424.33243"
|
||||
x2="67.175148"
|
||||
y2="348.57098" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3312"
|
||||
id="linearGradient3416"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,-1,0,649.49911)"
|
||||
x1="61.42857"
|
||||
y1="362.14285"
|
||||
x2="116.42857"
|
||||
y2="408.57144" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3349"
|
||||
id="linearGradient2254"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="140.66374"
|
||||
y1="424.33243"
|
||||
x2="67.175148"
|
||||
y2="348.57098" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3431"
|
||||
id="linearGradient2259"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
spreadMethod="pad"
|
||||
x1="70.491508"
|
||||
y1="416.38858"
|
||||
x2="113.64215"
|
||||
y2="375.87961" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3312"
|
||||
id="linearGradient2262"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,-9.49911)"
|
||||
x1="61.42857"
|
||||
y1="362.14285"
|
||||
x2="116.42857"
|
||||
y2="408.57144" />
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3291">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.400625"
|
||||
id="feGaussianBlur3293" />
|
||||
</filter>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3312"
|
||||
id="linearGradient3311"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,-9.49911)"
|
||||
x1="61.42857"
|
||||
y1="362.14285"
|
||||
x2="116.42857"
|
||||
y2="408.57144" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3431"
|
||||
id="linearGradient3313"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
spreadMethod="pad"
|
||||
x1="70.491508"
|
||||
y1="416.38858"
|
||||
x2="113.64215"
|
||||
y2="375.87961" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3349"
|
||||
id="linearGradient3315"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="140.66374"
|
||||
y1="424.33243"
|
||||
x2="67.175148"
|
||||
y2="348.57098" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3349"
|
||||
id="linearGradient3318"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="140.66374"
|
||||
y1="424.33243"
|
||||
x2="67.175148"
|
||||
y2="348.57098" />
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3546">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.15992437"
|
||||
id="feGaussianBlur3548" />
|
||||
</filter>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3558">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.25886071"
|
||||
id="feGaussianBlur3560" />
|
||||
</filter>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3588"
|
||||
id="linearGradient3737"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="26.795013"
|
||||
y1="216.34912"
|
||||
x2="149.90654"
|
||||
y2="323.98651" />
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter4363">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="2.410502"
|
||||
id="feGaussianBlur4365" />
|
||||
</filter>
|
||||
<pattern
|
||||
patternUnits="userSpaceOnUse"
|
||||
width="256"
|
||||
height="256"
|
||||
patternTransform="translate(-297.8418,85.357452)"
|
||||
id="pattern4467">
|
||||
<image
|
||||
xlink:href="metal5.jpg"
|
||||
sodipodi:absref="/home/carlos/Desktop/metal5.jpg"
|
||||
width="256"
|
||||
height="256"
|
||||
id="image4464"
|
||||
x="0"
|
||||
y="0" />
|
||||
</pattern>
|
||||
<pattern
|
||||
patternUnits="userSpaceOnUse"
|
||||
width="109.96293"
|
||||
height="109.96293"
|
||||
patternTransform="translate(-130.66779,-129.37468)"
|
||||
id="pattern4483">
|
||||
<rect
|
||||
id="rect4470"
|
||||
y="0"
|
||||
x="0"
|
||||
height="109.96293"
|
||||
width="109.96293"
|
||||
style="fill:url(#pattern4486);stroke:none" />
|
||||
</pattern>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3431"
|
||||
id="linearGradient2994"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,80)"
|
||||
spreadMethod="pad"
|
||||
x1="70.491508"
|
||||
y1="416.38858"
|
||||
x2="113.64215"
|
||||
y2="375.87961" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3349"
|
||||
id="linearGradient3000"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0484996,0,0,1.0484996,59.525242,85.095989)"
|
||||
x1="148.5945"
|
||||
y1="426.11398"
|
||||
x2="100.47015"
|
||||
y2="379.95963" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3312"
|
||||
id="linearGradient3006"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0484996,0,0,1.0484996,59.525242,75.136176)"
|
||||
x1="61.42857"
|
||||
y1="362.14285"
|
||||
x2="116.42857"
|
||||
y2="408.57144" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3312"
|
||||
id="linearGradient4003"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0484996,0,0,1.0484996,210.01137,213.49817)"
|
||||
x1="61.42857"
|
||||
y1="362.14285"
|
||||
x2="116.42857"
|
||||
y2="408.57144" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3431"
|
||||
id="linearGradient4005"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,80)"
|
||||
spreadMethod="pad"
|
||||
x1="70.491508"
|
||||
y1="416.38858"
|
||||
x2="113.64215"
|
||||
y2="375.87961" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3349"
|
||||
id="linearGradient4007"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0484996,0,0,1.0484996,210.01137,223.45798)"
|
||||
x1="148.5945"
|
||||
y1="426.11398"
|
||||
x2="100.47015"
|
||||
y2="379.95963" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3312"
|
||||
id="linearGradient2992"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0417465,0,0,1.0417465,81.266854,19.855591)"
|
||||
x1="47.555698"
|
||||
y1="131.83339"
|
||||
x2="141.37427"
|
||||
y2="207.52625" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3431"
|
||||
id="linearGradient2995"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-11.825686,-215.33459)"
|
||||
spreadMethod="pad"
|
||||
x1="70.491508"
|
||||
y1="416.38858"
|
||||
x2="113.64215"
|
||||
y2="375.87961" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3349"
|
||||
id="linearGradient2997"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0417465,0,0,1.0417465,81.266854,19.855591)"
|
||||
x1="93.412979"
|
||||
y1="209.62093"
|
||||
x2="95.111397"
|
||||
y2="116.20795" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3431"
|
||||
id="linearGradient2999"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,80)"
|
||||
spreadMethod="pad"
|
||||
x1="70.491508"
|
||||
y1="416.38858"
|
||||
x2="113.64215"
|
||||
y2="375.87961" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3312"
|
||||
id="linearGradient3001"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.091261,0,0,1.091261,67.062859,-117.80387)"
|
||||
x1="61.42857"
|
||||
y1="362.14285"
|
||||
x2="116.42857"
|
||||
y2="408.57144" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3431"
|
||||
id="linearGradient3003"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,80)"
|
||||
spreadMethod="pad"
|
||||
x1="70.491508"
|
||||
y1="416.38858"
|
||||
x2="113.64215"
|
||||
y2="375.87961" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3312"
|
||||
id="linearGradient3005"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0417465,0,0,1.0417465,81.266854,19.855591)"
|
||||
x1="47.555698"
|
||||
y1="131.83339"
|
||||
x2="141.37427"
|
||||
y2="207.52625" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3431"
|
||||
id="linearGradient3007"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-11.825686,-215.33459)"
|
||||
spreadMethod="pad"
|
||||
x1="70.491508"
|
||||
y1="416.38858"
|
||||
x2="113.64215"
|
||||
y2="375.87961" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3349"
|
||||
id="linearGradient3009"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0417465,0,0,1.0417465,81.266854,19.855591)"
|
||||
x1="93.412979"
|
||||
y1="209.62093"
|
||||
x2="95.111397"
|
||||
y2="116.20795" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3312"
|
||||
id="linearGradient2659"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.091261,0,0,1.091261,79.238251,-55.750939)"
|
||||
x1="61.42857"
|
||||
y1="362.14285"
|
||||
x2="116.42857"
|
||||
y2="408.57144" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3431"
|
||||
id="linearGradient2661"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,80)"
|
||||
spreadMethod="pad"
|
||||
x1="70.491508"
|
||||
y1="416.38858"
|
||||
x2="113.64215"
|
||||
y2="375.87961" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#333333"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
gridtolerance="10000"
|
||||
guidetolerance="10"
|
||||
objecttolerance="10"
|
||||
inkscape:pageopacity="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.71932516"
|
||||
inkscape:cx="434.88273"
|
||||
inkscape:cy="422.55322"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1151"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
width="1024px"
|
||||
height="768px"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
showgrid="false" />
|
||||
<metadata
|
||||
id="metadata2624">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<g
|
||||
id="g2650"
|
||||
transform="matrix(6.5972926,0,0,6.5972926,-735.85177,-2072.0441)">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccccccccc"
|
||||
transform="matrix(1.0429295,0,0,1.0429295,-163.96565,-107.54293)"
|
||||
id="path3543"
|
||||
d="M 331.79042,510.93347 C 310.5003,510.93347 292.02462,494.79355 292.02462,473.52251 L 292.0055,451.53024 L 292.0055,444.9442 L 278.50774,444.9442 L 278.50774,408.2929 L 335.4281,408.56096 L 353.23367,408.59927 C 374.54293,408.59927 392.99946,424.71998 392.99946,446.01013 L 392.99946,510.93347 L 331.79042,510.93347 L 331.79042,510.93347 L 331.79042,510.93347 z"
|
||||
style="opacity:0.26000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter3573);enable-background:accumulate" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccsccccc"
|
||||
id="path2576"
|
||||
d="M 237.71259,407.73851 C 237.71259,393.01827 237.71259,358.2933 237.71259,358.2933 C 237.71259,341.77424 223.22599,328.3835 205.35182,328.3835 L 186.80016,328.3835 L 186.80016,328.34364 L 136.62498,328.1244 L 136.62498,346.16533 C 136.62498,346.16533 140.72184,346.16533 144.32718,346.16533 C 149.70349,346.16533 150.65327,349.87669 150.65327,355.01364 L 150.69314,386.90796 C 150.69314,403.42703 165.1798,416.81775 183.03402,416.81775 L 227.11605,416.81775 C 232.7674,416.81775 237.71259,413.2388 237.71259,407.73851 z"
|
||||
style="fill:url(#linearGradient2659);fill-opacity:1;fill-rule:evenodd;display:inline" />
|
||||
<path
|
||||
transform="matrix(1.0484996,0,0,1.0484996,83.467541,-112.89106)"
|
||||
sodipodi:nodetypes="cccccsccccc"
|
||||
id="path3419"
|
||||
d="M 142.9375,500.53125 C 132.18568,493.1219 124.57068,484.61091 118.15625,473.34375 C 105.51181,449.98566 108.46834,438.39049 77.15625,435.65625 C 68.119961,435.65625 62.105033,433.65625 52.59375,433.65625 L 52.59375,436.96875 C 52.593751,436.96876 56.352431,438.87624 59.65625,438.87624 C 64.582947,438.87625 65.4375,442.29389 65.4375,447.00124 L 65.46875,476.15625 C 65.468747,491.29383 78.763908,503.5625 95.125,503.5625 L 135.5,503.5625 C 138.46358,503.5625 141.12572,502.39463 142.9375,500.53125 z"
|
||||
style="opacity:0.17514122;fill:url(#linearGradient2661);fill-opacity:1;fill-rule:nonzero;display:inline;filter:url(#filter3291)" />
|
||||
<path
|
||||
transform="matrix(1.0484996,0,0,1.0484996,83.467541,-112.89106)"
|
||||
sodipodi:nodetypes="csccccsssccccsssccccccccccccccccsscc"
|
||||
id="path2620"
|
||||
d="M 105.51844,438.54009 C 101.68173,438.54009 98.272696,439.96454 95.533603,442.73149 C 92.795878,445.49697 91.358403,448.94945 91.358413,452.8457 L 91.358413,472.54036 L 100.29137,472.54036 L 100.29137,452.8457 C 100.29137,451.35232 100.77865,450.18462 101.84492,449.10752 C 102.91469,448.02697 104.04752,447.53781 105.51844,447.53781 C 107.02019,447.53781 108.13602,448.02451 109.20813,449.10752 C 110.27441,450.18462 110.76169,451.35232 110.76169,452.8457 L 110.76169,472.54036 L 119.69466,472.54036 L 119.69466,452.8457 C 119.69466,451.35232 120.18194,450.18462 121.24822,449.10752 C 122.32033,448.02451 123.43616,447.53781 124.93793,447.53781 C 126.40886,447.53781 127.54166,448.02697 128.61143,449.10752 C 129.6777,450.18462 130.16499,451.35232 130.16499,452.8457 L 130.21354,475.85792 C 130.21354,480.76686 125.53868,484.9041 119.53283,484.9041 L 90.727281,484.79084 C 86.092574,484.79084 82.134153,480.27967 82.134153,474.48232 L 82.134153,431.14704 L 73.686691,431.14704 L 73.686691,476.14913 C 73.686691,480.92384 75.433872,485.11091 78.832855,488.49673 C 81.738048,491.36433 85.231929,493.06118 89.157544,493.481 L 89.157544,493.64291 L 121.23203,493.64291 C 126.16075,493.64291 130.49087,491.81026 133.98415,488.25387 L 134.00035,488.25387 C 136.97137,485.20142 138.70822,481.54389 139.13032,477.42763 L 139.09796,452.8457 C 139.09796,448.94945 137.66052,445.49697 134.92275,442.73149 C 132.18369,439.96454 128.77463,438.54009 124.93793,438.54009 C 121.17189,438.54009 117.8766,439.94051 115.212,442.50488 C 112.55519,439.94474 109.28292,438.54009 105.51844,438.54009 z"
|
||||
style="fill:#000000;fill-opacity:0.08040203;fill-rule:evenodd;stroke:none;stroke-width:4.7667098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter3546);enable-background:accumulate" />
|
||||
<path
|
||||
id="path4130"
|
||||
d="M 193.35561,347.16391 C 189.33282,347.16391 185.75845,348.65744 182.88651,351.55859 C 180.016,354.45819 178.50881,358.07812 178.50882,362.16333 L 178.50882,382.81318 L 187.87503,382.81318 L 187.87503,362.16333 C 187.87503,360.59753 188.38594,359.37319 189.50392,358.24385 C 190.62558,357.1109 191.81335,356.59801 193.35561,356.59801 C 194.93019,356.59801 196.10014,357.10832 197.22425,358.24385 C 198.34224,359.37319 198.85316,360.59753 198.85316,362.16333 L 198.85316,382.81318 L 208.21936,382.81318 L 208.21936,362.16333 C 208.21936,360.59753 208.73028,359.37319 209.84828,358.24385 C 210.97238,357.10832 212.14233,356.59801 213.71694,356.59801 C 215.25921,356.59801 216.44695,357.1109 217.56859,358.24385 C 218.68658,359.37319 219.1975,360.59753 219.1975,362.16333 L 219.2484,386.29164 C 219.2484,391.43866 214.34681,395.77655 208.04968,395.77655 L 177.84708,395.6578 C 172.98759,395.6578 168.83719,390.92784 168.83719,384.84932 L 168.83719,339.4123 L 159.98003,339.4123 L 159.98003,386.59697 C 159.98003,391.60325 161.81195,395.99339 165.37578,399.54343 C 168.42187,402.5501 172.08521,404.49909 176.2012,404.93927 L 209.8313,404.93919 C 214.99906,404.93919 219.53918,403.01766 223.20189,399.28879 L 223.21888,399.28879 C 226.33398,396.08829 228.15508,392.25338 228.59765,387.93748 L 228.56371,362.16333 C 228.56371,358.07812 227.05657,354.45819 224.18602,351.55859 C 221.31411,348.65744 217.73971,347.16391 213.71694,347.16391 C 209.76825,347.16391 206.31314,348.63225 203.5193,351.32099 C 200.73363,348.63668 197.30267,347.16391 193.35561,347.16391 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
sodipodi:nodetypes="csccccsssccccssscccccccccccccccsscc" />
|
||||
<path
|
||||
id="path4132"
|
||||
d="M 187.84765,395.68919 L 187.84765,404.93919 L 209.84765,404.93919 C 215.01539,404.93919 219.52869,403.01181 223.19139,399.28294 L 223.22265,399.28294 C 226.33776,396.08243 228.15508,392.25509 228.59765,387.93919 L 228.59765,382.68919 L 219.2539,382.68919 L 219.2539,386.28294 C 219.2539,391.42999 214.36352,395.75169 208.06639,395.75169 L 187.84765,395.68919 z"
|
||||
style="opacity:0.3;fill:#52a800;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccccccccccccccccsccccc"
|
||||
d="M 182.74092,423.66488 C 161.4508,423.66488 142.97513,407.52496 142.97513,386.25392 L 142.956,360.42629 L 142.956,353.84026 L 129.45825,353.84026 L 129.45825,321.02431 L 186.3786,321.29237 L 204.18418,321.33068 C 225.49343,321.33068 243.94996,337.45139 243.94996,358.74153 L 243.94996,423.66488 L 182.74092,423.66488 L 182.74092,423.66488 L 182.74092,423.66488 z M 235.27688,406.24921 C 235.27688,392.10579 235.27688,358.74153 235.27688,358.74153 C 235.27688,342.86978 221.35795,330.00376 204.18418,330.00376 L 186.35947,330.00376 L 186.35947,329.96546 L 138.15044,329.75481 L 138.15044,345.16718 C 138.15044,345.16718 140.08675,345.16718 143.55081,345.16718 C 147.21721,345.16718 151.62901,348.61265 151.62901,353.66876 L 151.66732,386.23492 C 151.66732,402.10668 165.58632,414.97268 182.74092,414.97268 L 225.09557,414.97268 C 230.52546,414.97268 235.27688,411.53397 235.27688,406.24921 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="path6141" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before (image error) Size: 25 KiB |
Binary file not shown.
Before ![]() (image error) Size: 1.1 KiB |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,532 +0,0 @@
|
||||
#!/usr/bin/python2
|
||||
|
||||
import sys
|
||||
|
||||
import gi
|
||||
gi.require_version("Gtk", "3.0")
|
||||
|
||||
from gi.repository import Gtk, Gdk, GdkPixbuf
|
||||
import keybinding
|
||||
|
||||
|
||||
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") )
|
||||
|
||||
# i18n
|
||||
gettext.install("mintmenu", "/usr/share/linuxmint/locale")
|
||||
|
||||
from easygsettings import EasyGSettings
|
||||
|
||||
class mintMenuConfig( object ):
|
||||
|
||||
def __init__( self ):
|
||||
|
||||
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.mainWindow=self.builder.get_object("mainWindow")
|
||||
|
||||
#i18n
|
||||
self.mainWindow.set_title(_("Menu preferences"))
|
||||
self.mainWindow.set_icon_from_file("/usr/lib/linuxmint/mintMenu/icon.svg")
|
||||
|
||||
self.builder.get_object("startWithFavorites").set_label(_("Always start with favorites pane"))
|
||||
self.builder.get_object("showButtonIcon").set_label(_("Show button icon"))
|
||||
self.builder.get_object("enableInternetSearch").set_label(_("Enable Internet search"))
|
||||
self.builder.get_object("useCustomColors").set_label(_("Use custom colors"))
|
||||
self.builder.get_object("showRecentPlugin").set_label(_("Show recent documents plugin"))
|
||||
self.builder.get_object("showApplicationsPlugin").set_label(_("Show applications plugin"))
|
||||
self.builder.get_object("showSystemPlugin").set_label(_("Show system plugin"))
|
||||
self.builder.get_object("showPlacesPlugin").set_label(_("Show places plugin"))
|
||||
|
||||
self.builder.get_object("showAppComments").set_label(_("Show application comments"))
|
||||
self.builder.get_object("showCategoryIcons").set_label(_("Show category icons"))
|
||||
self.builder.get_object("hover").set_label(_("Hover"))
|
||||
self.builder.get_object("remember_filter").set_label(_("Remember the last category or search"))
|
||||
self.builder.get_object("use_apt").set_label(_("Search for packages to install"))
|
||||
self.builder.get_object("swapGeneric").set_label(_("Swap name and generic name"))
|
||||
|
||||
self.builder.get_object("buttonTextLabel").set_text(_("Button text:"))
|
||||
self.builder.get_object("label1").set_text(_("Options"))
|
||||
self.builder.get_object("applicationsLabel").set_text(_("Applications"))
|
||||
|
||||
self.builder.get_object("colorsLabel").set_text(_("Theme"))
|
||||
self.builder.get_object("favLabel").set_text(_("Favorites"))
|
||||
self.builder.get_object("mainbuttonLabel").set_text(_("Main button"))
|
||||
self.builder.get_object("pluginsLabel").set_text(_("Plugins"))
|
||||
|
||||
self.builder.get_object("backgroundColorLabel").set_text(_("Background:"))
|
||||
self.builder.get_object("headingColorLabel").set_text(_("Headings:"))
|
||||
self.builder.get_object("themeLabel").set_text(_("Theme:"))
|
||||
|
||||
#self.builder.get_object("applicationsLabel").set_text(_("Applications"))
|
||||
#self.builder.get_object("favoritesLabel").set_text(_("Favorites"))
|
||||
self.builder.get_object("numberColumnsLabel").set_text(_("Number of columns:"))
|
||||
self.builder.get_object("iconSizeLabel").set_text(_("Icon size:"))
|
||||
self.builder.get_object("iconSizeLabel2").set_text(_("Icon size:"))
|
||||
self.builder.get_object("placesIconSizeLabel").set_text(_("Icon size:"))
|
||||
self.builder.get_object("systemIconSizeLabel").set_text(_("Icon size:"))
|
||||
self.builder.get_object("hoverLabel").set_text(_("Hover delay (ms):"))
|
||||
self.builder.get_object("label4").set_text(_("Button icon:"))
|
||||
self.builder.get_object("label5").set_text(_("Search command:"))
|
||||
|
||||
self.builder.get_object("placesLabel").set_text(_("Places"))
|
||||
self.builder.get_object("allowscrollbarcheckbutton").set_label(_("Allow Scrollbar"))
|
||||
self.builder.get_object("showgtkbookmarkscheckbutton").set_label(_("Show GTK Bookmarks"))
|
||||
self.builder.get_object("placesHeightEntryLabel").set_text(_("Height:"))
|
||||
self.builder.get_object("defaultPlacesFrameLabel").set_text(_("Toggle Default Places:"))
|
||||
self.builder.get_object("computercheckbutton").set_label(_("Computer"))
|
||||
self.builder.get_object("homecheckbutton").set_label(_("Home Folder"))
|
||||
self.builder.get_object("networkcheckbutton").set_label(_("Network"))
|
||||
self.builder.get_object("desktopcheckbutton").set_label(_("Desktop"))
|
||||
self.builder.get_object("trashcheckbutton").set_label(_("Trash"))
|
||||
self.builder.get_object("customPlacesFrameLabel").set_text(_("Custom Places:"))
|
||||
|
||||
self.builder.get_object("systemLabel").set_text(_("System"))
|
||||
self.builder.get_object("allowscrollbarcheckbutton1").set_label(_("Allow Scrollbar"))
|
||||
self.builder.get_object("systemHeightEntryLabel").set_text(_("Height:"))
|
||||
self.builder.get_object("defaultItemsFrameLabel").set_text(_("Toggle Default Items:"))
|
||||
self.builder.get_object("softwaremanagercheckbutton").set_label(_("Software Manager"))
|
||||
self.builder.get_object("packagemanagercheckbutton").set_label(_("Package Manager"))
|
||||
self.builder.get_object("controlcentercheckbutton").set_label(_("Control Center"))
|
||||
self.builder.get_object("terminalcheckbutton").set_label(_("Terminal"))
|
||||
self.builder.get_object("lockcheckbutton").set_label(_("Lock Screen"))
|
||||
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.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" )
|
||||
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.image_filter = Gtk.FileFilter()
|
||||
self.image_filter.set_name(_("Images"))
|
||||
self.image_filter.add_pattern("*.png")
|
||||
self.image_filter.add_pattern("*.jpg")
|
||||
self.image_filter.add_pattern("*.jpeg")
|
||||
self.image_filter.add_pattern("*.bmp")
|
||||
self.image_filter.add_pattern("*.ico")
|
||||
self.image_filter.add_pattern("*.xpm")
|
||||
self.image_filter.add_pattern("*.svg")
|
||||
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.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 )
|
||||
if os.path.exists("/usr/bin/mintinstall"):
|
||||
self.builder.get_object( "softwaremanagercheckbutton" ).show()
|
||||
else:
|
||||
self.builder.get_object( "softwaremanagercheckbutton" ).hide()
|
||||
|
||||
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.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.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.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.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.customplacepaths = self.settingsPlaces.get( "list-string", "custom-paths" )
|
||||
self.customplacenames = self.settingsPlaces.get( "list-string", "custom-names" )
|
||||
|
||||
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] ] )
|
||||
|
||||
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.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)
|
||||
self.builder.get_object("downButton").connect("clicked", self.moveDown)
|
||||
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")
|
||||
model = Gtk.ListStore(str, str)
|
||||
self.builder.get_object("themesCombo").set_model(model)
|
||||
selected_theme = model.append([_("Desktop theme"), "default"])
|
||||
for theme in sorted(themes):
|
||||
if theme.startswith("/usr/share/themes") and theme.endswith("/gtk-2.0/gtkrc"):
|
||||
theme = theme.replace("/usr/share/themes/", "")
|
||||
theme = theme.replace("gtk-2.0", "")
|
||||
theme = theme.replace("gtkrc", "")
|
||||
theme = theme.replace("/", "")
|
||||
theme = theme.strip()
|
||||
iter = model.append([theme, theme])
|
||||
if theme == theme_name:
|
||||
selected_theme = iter
|
||||
self.builder.get_object("themesCombo").set_active_iter(selected_theme)
|
||||
self.builder.get_object("themesCombo").connect("changed", self.set_theme)
|
||||
|
||||
self.toggleUseCustomColors(self.useCustomColors)
|
||||
self.mainWindow.present()
|
||||
self.getBackgroundColor()
|
||||
|
||||
def set_theme(self, widget):
|
||||
model = widget.get_model()
|
||||
iter = widget.get_active_iter()
|
||||
theme_name = model.get_value(iter, 1)
|
||||
self.settings.set( "string", "theme-name", theme_name)
|
||||
|
||||
def getPluginsToggle(self):
|
||||
array = self.settings.get ("list-string", "plugins-list")
|
||||
if "recent" in array:
|
||||
self.showRecentPlugin.set_active(True)
|
||||
else:
|
||||
self.showRecentPlugin.set_active(False)
|
||||
if "applications" in array:
|
||||
self.showApplicationsPlugin.set_active(True)
|
||||
else:
|
||||
self.showApplicationsPlugin.set_active(False)
|
||||
if "system_management" in array:
|
||||
self.showSystemPlugin.set_active(True)
|
||||
else:
|
||||
self.showSystemPlugin.set_active(False)
|
||||
if "places" in array:
|
||||
self.showPlacesPlugin.set_active(True)
|
||||
else:
|
||||
self.showPlacesPlugin.set_active(False)
|
||||
|
||||
def setPluginsLayout (self, widget):
|
||||
visiblePlugins = []
|
||||
if self.showPlacesPlugin.get_active():
|
||||
visiblePlugins.append("places")
|
||||
if self.showSystemPlugin.get_active():
|
||||
visiblePlugins.append("system_management")
|
||||
if self.showApplicationsPlugin.get_active():
|
||||
if self.showPlacesPlugin.get_active() or self.showSystemPlugin.get_active():
|
||||
visiblePlugins.append("newpane")
|
||||
visiblePlugins.append("applications")
|
||||
if self.showRecentPlugin.get_active():
|
||||
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)
|
||||
|
||||
def setShowButtonIcon( self, value ):
|
||||
self.showButtonIcon.set_active(not 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 ):
|
||||
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 ] )
|
||||
if setting_type == "color":
|
||||
color = Gdk.RGBA()
|
||||
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 ) )
|
||||
|
||||
def callSetter( self, settings, key, args ):
|
||||
if args[0] == "bool":
|
||||
args[1]( settings.get_boolean(key) )
|
||||
elif args[0] == "string":
|
||||
args[1]( settings.get_string(key) )
|
||||
elif args[0] == "int":
|
||||
args[1]( settings.get_int(key) )
|
||||
elif args[0] == "color":
|
||||
color = Gdk.RGBA()
|
||||
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()))
|
||||
else:
|
||||
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 getBackgroundColor( self ):
|
||||
color = self.backgroundColor.get_rgba()
|
||||
return self.gdkRGBAToString( color )
|
||||
|
||||
def getHeadingColor( self ):
|
||||
color = self.headingColor.get_rgba()
|
||||
return self.gdkRGBAToString( color )
|
||||
|
||||
def gdkRGBAToString( self, gdkRGBA ):
|
||||
return "#%.2X%.2X%.2X" % ( gdkRGBA.red * 256, gdkRGBA.green * 256, gdkRGBA.blue * 256 )
|
||||
|
||||
def moveUp( self, upButton ):
|
||||
|
||||
treeselection = self.customplacestree.get_selection()
|
||||
currentiter = (treeselection.get_selected())[1]
|
||||
|
||||
if ( treeselection != None ):
|
||||
|
||||
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)):
|
||||
lagiter = nextiter
|
||||
nextiter = self.customplacestreemodel.iter_next(nextiter)
|
||||
|
||||
if (nextiter != None):
|
||||
self.customplacestreemodel.swap(currentiter, lagiter)
|
||||
|
||||
return
|
||||
|
||||
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.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" )
|
||||
def chooseFolder(folderButton):
|
||||
currentPath = newPlacePath.get_text()
|
||||
if (currentPath!=""):
|
||||
folderChooserDialog.select_filename(currentPath)
|
||||
response = folderChooserDialog.run()
|
||||
folderChooserDialog.hide()
|
||||
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 ):
|
||||
name = newPlaceName.get_text()
|
||||
path = newPlacePath.get_text()
|
||||
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.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" )
|
||||
treeselection = self.customplacestree.get_selection()
|
||||
currentiter = (treeselection.get_selected())[1]
|
||||
|
||||
if (currentiter != None):
|
||||
|
||||
initName = self.customplacestreemodel.get_value(currentiter, 0)
|
||||
initPath = self.customplacestreemodel.get_value(currentiter, 1)
|
||||
|
||||
editPlaceName.set_text(initName)
|
||||
editPlacePath.set_text(initPath)
|
||||
def chooseFolder(folderButton):
|
||||
currentPath = editPlacePath.get_text()
|
||||
if (currentPath!=""):
|
||||
folderChooserDialog.select_filename(currentPath)
|
||||
response = folderChooserDialog.run()
|
||||
folderChooserDialog.hide()
|
||||
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):
|
||||
name = editPlaceName.get_text()
|
||||
path = editPlacePath.get_text()
|
||||
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]
|
||||
|
||||
nextiter = self.customplacestreemodel.iter_next(currentiter)
|
||||
|
||||
if (nextiter != None):
|
||||
self.customplacestreemodel.swap(currentiter, nextiter)
|
||||
|
||||
return
|
||||
|
||||
|
||||
def removePlace(self, removeButton):
|
||||
|
||||
treeselection = self.customplacestree.get_selection()
|
||||
currentiter = (treeselection.get_selected())[1]
|
||||
|
||||
if (currentiter != None):
|
||||
self.customplacestreemodel.remove(currentiter)
|
||||
|
||||
return
|
||||
|
||||
def togglePlacesHeightEnabled(self, toggle):
|
||||
if (toggle.get_active() == True):
|
||||
self.placesHeightButton.set_sensitive(True)
|
||||
else:
|
||||
self.placesHeightButton.set_sensitive(False)
|
||||
|
||||
def toggleSystemHeightEnabled(self, toggle):
|
||||
if (toggle.get_active() == True):
|
||||
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)):
|
||||
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 ) ]
|
||||
treeiter = self.customplacestreemodel.iter_next(treeiter)
|
||||
self.settingsPlaces.set( "list-string", "custom-paths", customplacepaths)
|
||||
self.settingsPlaces.set( "list-string", "custom-names", customplacenames)
|
||||
|
||||
|
||||
window = mintMenuConfig()
|
||||
Gtk.main()
|
@ -1 +1 @@
|
||||
#!/usr/bin/python2
|
||||
#!/usr/bin/python3
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,41 +1,43 @@
|
||||
#!/usr/bin/python2
|
||||
#!/usr/bin/python3
|
||||
|
||||
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
|
||||
from gi.repository import MateDesktop
|
||||
import os.path
|
||||
import shutil
|
||||
import re
|
||||
from execute import *
|
||||
import unidecode
|
||||
|
||||
import xdg.DesktopEntry
|
||||
import xdg.Menu
|
||||
from filemonitor import monitor as filemonitor
|
||||
|
||||
import gi
|
||||
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
|
||||
|
||||
|
||||
class IconManager(GObject.GObject):
|
||||
|
||||
__gsignals__ = {
|
||||
"changed" : (GObject.SignalFlags.RUN_LAST, None, () )
|
||||
}
|
||||
"changed" : (GObject.SignalFlags.RUN_LAST, None, ())
|
||||
}
|
||||
|
||||
def __init__( self ):
|
||||
GObject.GObject.__init__( self )
|
||||
self.icons = { }
|
||||
def __init__(self):
|
||||
GObject.GObject.__init__(self)
|
||||
self.icons = {}
|
||||
self.count = 0
|
||||
|
||||
# Some apps don't put a default icon in the default theme folder, so we will search all themes
|
||||
def createTheme( d ):
|
||||
theme = Gtk.IconTheme()
|
||||
theme.set_custom_theme( d )
|
||||
return theme
|
||||
# def createTheme(d):
|
||||
# theme = Gtk.IconTheme()
|
||||
# theme.set_custom_theme(d)
|
||||
# return theme
|
||||
|
||||
# This takes to much time and there are only a very few applications that use icons from different themes
|
||||
#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.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()
|
||||
@ -47,19 +49,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 = [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 )
|
||||
|
||||
|
||||
def getIcon( self, iconName, iconSize ):
|
||||
# for theme in self.themes:
|
||||
# theme.connect("changed", self.themeChanged)
|
||||
|
||||
def getIcon(self, iconName, iconSize):
|
||||
if not iconName:
|
||||
return None
|
||||
|
||||
@ -67,11 +67,11 @@ class IconManager(GObject.GObject):
|
||||
iconFileName = ""
|
||||
realIconName = ""
|
||||
needTempFile = False
|
||||
#[ iconWidth, iconHeight ] = self.getIconSize( iconSize )
|
||||
#[iconWidth, iconHeight] = self.getIconSize(iconSize)
|
||||
if iconSize <= 0:
|
||||
return None
|
||||
|
||||
elif os.path.isabs( iconName ):
|
||||
elif os.path.isabs(iconName):
|
||||
iconFileName = iconName
|
||||
needTempFile = True
|
||||
else:
|
||||
@ -80,99 +80,86 @@ class IconManager(GObject.GObject):
|
||||
else:
|
||||
realIconName = iconName
|
||||
|
||||
if iconFileName and needTempFile and os.path.exists( iconFileName ):
|
||||
if iconFileName and needTempFile and os.path.exists(iconFileName):
|
||||
tmpIconName = iconFileName.replace("/", "-")
|
||||
realIconName = tmpIconName[:-4]
|
||||
if not os.path.exists(os.path.join(self.iconDir, tmpIconName)):
|
||||
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 ):
|
||||
self.emit( "changed" )
|
||||
def themeChanged(self, theme):
|
||||
self.emit("changed")
|
||||
|
||||
GObject.type_register(IconManager)
|
||||
|
||||
class easyButton( Gtk.Button ):
|
||||
class easyButton(Gtk.Button):
|
||||
|
||||
def __init__( self, iconName, iconSize, labels = None, buttonWidth = -1, buttonHeight = -1 ):
|
||||
GObject.GObject.__init__( self )
|
||||
self.connections = [ ]
|
||||
def __init__(self, iconName, iconSize, labels=None, buttonWidth=-1, buttonHeight=-1, ellipsis=True):
|
||||
GObject.GObject.__init__(self)
|
||||
self.connections = []
|
||||
self.iconName = iconName
|
||||
self.iconSize = iconSize
|
||||
self.showIcon = True
|
||||
self.ellipsis = ellipsis
|
||||
|
||||
self.set_relief( Gtk.ReliefStyle.NONE )
|
||||
self.set_size_request( buttonWidth, buttonHeight )
|
||||
self.set_relief(Gtk.ReliefStyle.NONE)
|
||||
self.set_size_request(buttonWidth, buttonHeight)
|
||||
|
||||
Align1 = Gtk.Alignment.new( 0, 0.5, 1.0, 0 )
|
||||
HBox1 = Gtk.Box( orientation=Gtk.Orientation.HORIZONTAL )
|
||||
self.labelBox = Gtk.Box( orientation=Gtk.Orientation.VERTICAL, spacing=2 )
|
||||
Align1 = Gtk.Alignment.new(0, 0.5, 1.0, 0)
|
||||
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 = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
|
||||
self.image_box.pack_start(self.buttonImage, False, False, 5)
|
||||
self.image_box.show_all()
|
||||
HBox1.pack_start( self.image_box, False, False, 0 )
|
||||
HBox1.pack_start(self.image_box, False, False, 0)
|
||||
|
||||
if labels:
|
||||
for label in labels:
|
||||
if isinstance( label, basestring ):
|
||||
self.addLabel( label )
|
||||
elif isinstance( label, list ):
|
||||
self.addLabel( label[0], label[1] )
|
||||
if isinstance(label, str):
|
||||
self.addLabel(label)
|
||||
elif isinstance(label, list):
|
||||
self.addLabel(label[0], label[1])
|
||||
|
||||
self.labelBox.show()
|
||||
HBox1.pack_start( self.labelBox , True, True, 0)
|
||||
HBox1.pack_start(self.labelBox , True, True, 0)
|
||||
HBox1.show()
|
||||
Align1.add( HBox1 )
|
||||
Align1.add(HBox1)
|
||||
Align1.show()
|
||||
self.add( Align1 )
|
||||
self.add(Align1)
|
||||
|
||||
self.connectSelf( "destroy", self.onDestroy )
|
||||
self.connect( "released", self.onRelease )
|
||||
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 ) )
|
||||
def connectSelf(self, event, callback):
|
||||
self.connections.append(self.connect(event, callback))
|
||||
|
||||
def onRelease( self, widget ):
|
||||
widget.get_style_context().set_state( Gtk.StateFlags.NORMAL )
|
||||
def onRelease(self, widget):
|
||||
widget.get_style_context().set_state(Gtk.StateFlags.NORMAL)
|
||||
|
||||
def onDestroy( self, widget ):
|
||||
def onDestroy(self, widget):
|
||||
self.buttonImage.clear()
|
||||
iconManager.disconnect( self.themeChangedHandlerId )
|
||||
# iconManager.disconnect(self.themeChangedHandlerId)
|
||||
for connection in self.connections:
|
||||
self.disconnect( connection )
|
||||
self.disconnect(connection)
|
||||
del self.connections
|
||||
|
||||
|
||||
def addLabel( self, text, styles = None ):
|
||||
def addLabel(self, text, styles = None):
|
||||
label = Gtk.Label()
|
||||
if "<b>" in text or "<span" in text:
|
||||
label.set_markup(text.replace('&', '&')) # don't remove our pango
|
||||
@ -182,115 +169,107 @@ class easyButton( Gtk.Button ):
|
||||
if styles:
|
||||
labelStyle = Pango.AttrList()
|
||||
for attr in styles:
|
||||
labelStyle.insert( attr )
|
||||
label.set_attributes( labelStyle )
|
||||
labelStyle.insert(attr)
|
||||
label.set_attributes(labelStyle)
|
||||
|
||||
label.set_ellipsize( Pango.EllipsizeMode.END )
|
||||
label.set_alignment( 0.0, 1.0 )
|
||||
if self.ellipsis:
|
||||
label.set_ellipsize(Pango.EllipsizeMode.END)
|
||||
label.set_alignment(0.0, 1.0)
|
||||
label.set_max_width_chars(0)
|
||||
label.show()
|
||||
self.labelBox.pack_start( label , True, True, 0)
|
||||
self.labelBox.pack_start(label , True, True, 0)
|
||||
|
||||
|
||||
def getIcon ( self, iconSize ):
|
||||
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 )
|
||||
|
||||
icon = iconManager.getIcon(self.iconName, iconSize)
|
||||
return icon
|
||||
|
||||
def setIcon ( self, iconName ):
|
||||
def setIcon(self, iconName):
|
||||
self.iconName = iconName
|
||||
self.iconChanged()
|
||||
|
||||
# IconTheme changed, setup new button icons
|
||||
def themeChanged( self, theme ):
|
||||
def themeChanged(self, theme):
|
||||
self.iconChanged()
|
||||
|
||||
def iconChanged( self ):
|
||||
icon = self.getIcon( self.iconSize )
|
||||
def iconChanged(self):
|
||||
icon = self.getIcon(self.iconSize)
|
||||
self.buttonImage.destroy()
|
||||
if icon:
|
||||
self.buttonImage = icon
|
||||
self.image_box.pack_start(self.buttonImage, False, False, 5)
|
||||
self.image_box.show_all()
|
||||
else:
|
||||
#[iW, iH ] = iconManager.getIconSize( self.iconSize )
|
||||
self.buttonImage.set_size_request( self.iconSize, self.iconSize )
|
||||
#[iW, iH] = iconManager.getIconSize(self.iconSize)
|
||||
self.buttonImage.set_size_request(self.iconSize, self.iconSize )
|
||||
|
||||
def setIconSize( self, size ):
|
||||
def setIconSize(self, size):
|
||||
self.iconSize = size
|
||||
icon = self.getIcon( self.iconSize )
|
||||
icon = self.getIcon(self.iconSize)
|
||||
self.buttonImage.destroy()
|
||||
if icon:
|
||||
self.buttonImage = icon
|
||||
self.image_box.pack_start(self.buttonImage, False, False, 5)
|
||||
self.image_box.show_all()
|
||||
elif self.iconSize:
|
||||
#[ iW, iH ] = iconManager.getIconSize( self.iconSize )
|
||||
self.buttonImage.set_size_request( self.iconSize, self.iconSize )
|
||||
#[iW, iH] = iconManager.getIconSize(self.iconSize)
|
||||
self.buttonImage.set_size_request(self.iconSize, self.iconSize )
|
||||
|
||||
class ApplicationLauncher( easyButton ):
|
||||
class ApplicationLauncher(easyButton):
|
||||
|
||||
def __init__( self, desktopFile, iconSize):
|
||||
def __init__(self, desktopFile, iconSize):
|
||||
|
||||
if isinstance( desktopFile, xdg.Menu.MenuEntry ):
|
||||
if isinstance(desktopFile, xdg.Menu.MenuEntry):
|
||||
desktopItem = desktopFile.DesktopEntry
|
||||
desktopFile = desktopItem.filename
|
||||
self.appDirs = desktop.desktopFile.AppDirs
|
||||
elif isinstance( desktopFile, xdg.Menu.DesktopEntry ):
|
||||
self.appDirs = desktopFile.AppDirs
|
||||
elif isinstance(desktopFile, xdg.Menu.DesktopEntry):
|
||||
desktopItem = desktopFile
|
||||
desktopFile = desktopItem.filename
|
||||
self.appDirs = [ os.path.dirname( desktopItem.filename ) ]
|
||||
self.appDirs = [os.path.dirname(desktopItem.filename)]
|
||||
else:
|
||||
desktopItem = xdg.DesktopEntry.DesktopEntry( desktopFile )
|
||||
self.appDirs = [ os.path.dirname( desktopFile ) ]
|
||||
desktopItem = xdg.DesktopEntry.DesktopEntry(desktopFile)
|
||||
self.appDirs = [os.path.dirname(desktopFile)]
|
||||
|
||||
self.desktopFile = desktopFile
|
||||
self.startupMonitorId = 0
|
||||
self.relevance = 0
|
||||
|
||||
self.loadDesktopEntry( desktopItem )
|
||||
self.loadDesktopEntry(desktopItem)
|
||||
|
||||
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 ) )
|
||||
base = os.path.basename(self.desktopFile)
|
||||
for directory in self.appDirs:
|
||||
self.desktopEntryMonitors.append(filemonitor.addMonitor(os.path.join(directory, base) , self.desktopEntryFileChangedCallback))
|
||||
|
||||
easyButton.__init__( self, self.appIconName, iconSize )
|
||||
easyButton.__init__(self, self.appIconName, iconSize)
|
||||
self.setupLabels()
|
||||
|
||||
# Drag and Drop
|
||||
self.connectSelf( "drag-data-get", self.dragDataGet )
|
||||
self.connectSelf("drag-data-get", self.dragDataGet)
|
||||
|
||||
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 )
|
||||
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)
|
||||
self.drag_source_set_icon_name(self.iconName)
|
||||
|
||||
icon = self.getIcon( Gtk.IconSize.DND )
|
||||
if icon:
|
||||
iconName, s = icon.get_icon_name()
|
||||
self.drag_source_set_icon_name( iconName )
|
||||
self.connectSelf("focus-in-event", self.onFocusIn)
|
||||
self.connectSelf("focus-out-event", self.onFocusOut)
|
||||
self.connectSelf("clicked", self.execute)
|
||||
|
||||
self.connectSelf( "focus-in-event", self.onFocusIn )
|
||||
self.connectSelf( "focus-out-event", self.onFocusOut )
|
||||
self.connectSelf( "clicked", self.execute )
|
||||
|
||||
|
||||
|
||||
def loadDesktopEntry( self, desktopItem ):
|
||||
def loadDesktopEntry(self, desktopItem):
|
||||
try:
|
||||
self.appName = self.strip_accents(desktopItem.getName())
|
||||
self.appGenericName = self.strip_accents(desktopItem.getGenericName())
|
||||
self.appComment = self.strip_accents(desktopItem.getComment())
|
||||
self.appExec = self.strip_accents(desktopItem.getExec().replace('\\\\', '\\'))
|
||||
self.appName = desktopItem.getName()
|
||||
self.appGenericName = desktopItem.getGenericName()
|
||||
self.appComment = desktopItem.getComment()
|
||||
self.appExec = desktopItem.getExec().replace('\\\\', '\\')
|
||||
self.appIconName = desktopItem.getIcon()
|
||||
self.appCategories = desktopItem.getCategories()
|
||||
self.appMateDocPath = desktopItem.get( "X-MATE-DocPath" ) or ""
|
||||
self.appMateDocPath = desktopItem.get("X-MATE-DocPath") or ""
|
||||
self.useTerminal = desktopItem.getTerminal()
|
||||
self.appPath = desktopItem.getPath()
|
||||
self.prefersOffload = desktopItem.get("PrefersNonDefaultGPU", "Desktop Entry", type="boolean")
|
||||
|
||||
if not self.appMateDocPath:
|
||||
self.appKdeDocPath = desktopItem.getDocPath() or ""
|
||||
@ -299,77 +278,88 @@ class ApplicationLauncher( easyButton ):
|
||||
self.appGenericName = self.appGenericName.strip()
|
||||
self.appComment = self.appComment.strip()
|
||||
|
||||
basename = os.path.basename( self.desktopFile )
|
||||
self.startupFilePath = os.path.join( os.path.expanduser("~"), ".config", "autostart", basename )
|
||||
basename = os.path.basename(self.desktopFile)
|
||||
self.startupFilePath = os.path.join(os.path.expanduser("~"), ".config/autostart", basename)
|
||||
if self.startupMonitorId:
|
||||
filemonitor.removeMonitor( self.startupMonitorId )
|
||||
if os.path.exists (self.startupFilePath):
|
||||
self.startupMonitorId = filemonitor.addMonitor( self.startupFilePath, self.startupFileChanged )
|
||||
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
|
||||
|
||||
def onFocusIn(self, widget, event):
|
||||
self.set_relief(Gtk.ReliefStyle.HALF)
|
||||
|
||||
def onFocusIn( self, widget, event ):
|
||||
self.set_relief( Gtk.ReliefStyle.HALF )
|
||||
def onFocusOut(self, widget, event):
|
||||
self.set_relief(Gtk.ReliefStyle.NONE)
|
||||
|
||||
def onFocusOut( self, widget, event ):
|
||||
self.set_relief( Gtk.ReliefStyle.NONE )
|
||||
def setupLabels(self):
|
||||
self.addLabel(self.appName)
|
||||
|
||||
def setupLabels( self ):
|
||||
self.addLabel( self.appName )
|
||||
def filterText(self, text):
|
||||
keywords = self.strip_case_and_accents(text).split()
|
||||
self.relevance = 0
|
||||
|
||||
appName = self.strip_case_and_accents(self.appName)
|
||||
appGenericName = self.strip_case_and_accents(self.appGenericName)
|
||||
appComment = self.strip_case_and_accents(self.appComment)
|
||||
appExec = self.strip_case_and_accents(self.appExec)
|
||||
|
||||
def filterText( self, text ):
|
||||
keywords = text.lower().split()
|
||||
appName = self.appName.lower()
|
||||
appGenericName = self.appGenericName.lower()
|
||||
appComment = self.appComment.lower()
|
||||
appExec = self.appExec.lower()
|
||||
for keyword in keywords:
|
||||
keyw = self.strip_accents(keyword)
|
||||
if keyw != "" and appName.find( keyw ) == -1 and appGenericName.find( keyw ) == -1 and appComment.find( keyw ) == -1 and appExec.find( keyw ) == -1:
|
||||
if appName == keyword:
|
||||
self.relevance += 32
|
||||
elif appName.find(keyword) == 0:
|
||||
self.relevance += 16
|
||||
elif appName.find(keyword) != -1:
|
||||
self.relevance += 8
|
||||
|
||||
if appExec.find(keyword) != -1:
|
||||
self.relevance += 4
|
||||
if appComment.find(keyword) != -1:
|
||||
self.relevance += 2
|
||||
if appGenericName.find(keyword) != -1:
|
||||
self.relevance += 1
|
||||
|
||||
if keyword != "" and appName.find(keyword) == -1 and appGenericName.find(keyword) == -1 and appComment.find(keyword) == -1 and appExec.find(keyword) == -1:
|
||||
self.hide()
|
||||
return False
|
||||
|
||||
self.show()
|
||||
return True
|
||||
|
||||
def strip_accents(self, string):
|
||||
value = string
|
||||
if isinstance(string, unicode):
|
||||
def strip_case_and_accents(self, string):
|
||||
if isinstance(string, str):
|
||||
try:
|
||||
value = string.encode('UTF8', 'ignore')
|
||||
value = unidecode.unidecode(string.lower())
|
||||
except:
|
||||
pass
|
||||
return value
|
||||
|
||||
def getTooltip( self ):
|
||||
def getTooltip(self):
|
||||
tooltip = self.appName
|
||||
if self.appComment != "" and self.appComment != self.appName:
|
||||
tooltip = tooltip + "\n" + self.appComment
|
||||
|
||||
return tooltip
|
||||
|
||||
|
||||
|
||||
def dragDataGet( self, widget, context, selection, targetType, eventTime ):
|
||||
def dragDataGet(self, widget, context, selection, targetType, eventTime):
|
||||
if targetType == 100: # text/plain
|
||||
selection.set_text( "'" + self.desktopFile + "'", -1 )
|
||||
selection.set_text("'" + self.desktopFile + "'", -1)
|
||||
elif targetType == 101: # text/uri-list
|
||||
if self.desktopFile[0:7] == "file://":
|
||||
selection.set_uris( [ self.desktopFile ] )
|
||||
selection.set_uris([self.desktopFile])
|
||||
else:
|
||||
selection.set_uris( [ "file://" + self.desktopFile ] )
|
||||
selection.set_uris(["file://" + self.desktopFile])
|
||||
|
||||
def execute( self, *args ):
|
||||
def execute(self, *args, **kwargs):
|
||||
if self.appExec:
|
||||
if self.useTerminal:
|
||||
cmd = "x-terminal-emulator -e \"" + self.appExec + "\""
|
||||
@ -377,74 +367,77 @@ class ApplicationLauncher( easyButton ):
|
||||
cmd = "mate-terminal -e \"" + self.appExec + "\""
|
||||
Execute(cmd, self.appPath)
|
||||
else:
|
||||
Execute(self.appExec, self.appPath)
|
||||
offload = False
|
||||
|
||||
def uninstall (self, *args ):
|
||||
Execute("gksu /usr/lib/linuxmint/common/mint-remove-application.py " + self.desktopFile)
|
||||
try:
|
||||
offload = kwargs["offload"]
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
if self.prefersOffload:
|
||||
offload = True
|
||||
|
||||
Execute(None, desktopFile=self.desktopFile, offload=offload)
|
||||
|
||||
def uninstall(self, *args):
|
||||
Execute("mint-remove-application " + self.desktopFile)
|
||||
|
||||
# IconTheme changed, setup new icons for button and drag 'n drop
|
||||
def iconChanged( self ):
|
||||
easyButton.iconChanged( self )
|
||||
def iconChanged(self):
|
||||
easyButton.iconChanged(self)
|
||||
|
||||
icon = self.getIcon( Gtk.IconSize.DND )
|
||||
icon = self.getIcon(Gtk.IconSize.DND)
|
||||
if icon:
|
||||
iconName, size = icon.get_icon_name()
|
||||
self.drag_source_set_icon_name( iconName )
|
||||
self.drag_source_set_icon_name(iconName)
|
||||
|
||||
def startupFileChanged( self, *args ):
|
||||
self.inStartup = os.path.exists( self.startupFilePath )
|
||||
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 )
|
||||
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 removeFromFavourites(self):
|
||||
if os.path.exists(self.favouritesFilePath):
|
||||
os.remove(self.favouritesFilePath)
|
||||
|
||||
shutil.copyfile( self.desktopFile, self.favouritesFilePath )
|
||||
|
||||
def removeFromFavourites( self ):
|
||||
if os.path.exists( self.favouritesFilePath ):
|
||||
os.remove( self.favouritesFilePath )
|
||||
|
||||
def isInStartup( self ):
|
||||
def isInStartup(self):
|
||||
#return self.inStartup
|
||||
return os.path.exists( self.startupFilePath )
|
||||
return os.path.exists(self.startupFilePath)
|
||||
|
||||
def onDestroy( self, widget ):
|
||||
easyButton.onDestroy( self, widget )
|
||||
def onDestroy(self, widget):
|
||||
easyButton.onDestroy(self, widget)
|
||||
if self.startupMonitorId:
|
||||
filemonitor.removeMonitor( self.startupMonitorId )
|
||||
filemonitor.removeMonitor(self.startupMonitorId)
|
||||
for id in self.desktopEntryMonitors:
|
||||
filemonitor.removeMonitor( id )
|
||||
filemonitor.removeMonitor(id)
|
||||
|
||||
def desktopEntryFileChangedCallback (self):
|
||||
def desktopEntryFileChangedCallback(self):
|
||||
GLib.timeout_add(200, self.onDesktopEntryFileChanged)
|
||||
|
||||
def onDesktopEntryFileChanged( self ):
|
||||
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 ) ):
|
||||
# print os.path.join( dir, base ), self.desktopFile
|
||||
self.loadDesktopEntry( xdg.DesktopEntry.DesktopEntry( os.path.join( dir, base ) ) )
|
||||
base = os.path.basename(self.desktopFile)
|
||||
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(directory, base)))
|
||||
for child in self.labelBox:
|
||||
child.destroy()
|
||||
|
||||
@ -460,102 +453,89 @@ class ApplicationLauncher( easyButton ):
|
||||
self.destroy()
|
||||
return False
|
||||
|
||||
class MenuApplicationLauncher( ApplicationLauncher ):
|
||||
class MenuApplicationLauncher(ApplicationLauncher):
|
||||
|
||||
def __init__( self, desktopFile, iconSize, category, showComment, highlight=False ):
|
||||
def __init__(self, desktopFile, iconSize, category, showComment, highlight=False):
|
||||
|
||||
self.showComment = showComment
|
||||
self.appCategory = category
|
||||
self.highlight = highlight
|
||||
|
||||
ApplicationLauncher.__init__( self, desktopFile, iconSize )
|
||||
ApplicationLauncher.__init__(self, desktopFile, iconSize)
|
||||
|
||||
|
||||
def filterCategory( self, category ):
|
||||
def filterCategory(self, category):
|
||||
if self.appCategory == category or category == "":
|
||||
self.show()
|
||||
else:
|
||||
self.hide()
|
||||
|
||||
def setupLabels( self ):
|
||||
def setupLabels(self):
|
||||
appName = self.appName
|
||||
appComment = self.appComment
|
||||
if self.highlight:
|
||||
try:
|
||||
#color = self.labelBox.get_style_context().get_color( Gtk.StateFlags.SELECTED ).to_string()
|
||||
#if len(color) > 0 and color[0] == "#":
|
||||
#appName = "<span foreground=\"%s\"><b>%s</b></span>" % (color, appName);
|
||||
#appComment = "<span foreground=\"%s\"><b>%s</b></span>" % (color, appComment);
|
||||
#appName = "<b>%s</b>" % (appName);
|
||||
#appComment = "<b>%s</b>" % (appComment);
|
||||
#else:
|
||||
#appName = "<b>%s</b>" % (appName);
|
||||
#appComment = "<b>%s</b>" % (appComment);
|
||||
appName = "<b>%s</b>" % (appName);
|
||||
appComment = "<b>%s</b>" % (appComment);
|
||||
except Exception, detail:
|
||||
print detail
|
||||
pass
|
||||
appName = "<b>%s</b>" % appName
|
||||
appComment = "<b>%s</b>" % appComment
|
||||
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 )
|
||||
self.addLabel(appName)
|
||||
|
||||
def execute( self, *args ):
|
||||
def execute(self, *args, **kwargs):
|
||||
self.highlight = False
|
||||
for child in self.labelBox:
|
||||
child.destroy()
|
||||
self.setupLabels()
|
||||
return super(MenuApplicationLauncher, self).execute(*args)
|
||||
return super(MenuApplicationLauncher, self).execute(*args, **kwargs)
|
||||
|
||||
def setShowComment( self, showComment ):
|
||||
def setShowComment(self, showComment):
|
||||
self.showComment = showComment
|
||||
for child in self.labelBox:
|
||||
child.destroy()
|
||||
self.setupLabels()
|
||||
|
||||
class FavApplicationLauncher( ApplicationLauncher ):
|
||||
class FavApplicationLauncher(ApplicationLauncher):
|
||||
|
||||
def __init__( self, desktopFile, iconSize, swapGeneric = False ):
|
||||
def __init__(self, desktopFile, iconSize, swapGeneric = False):
|
||||
|
||||
self.swapGeneric = swapGeneric
|
||||
|
||||
ApplicationLauncher.__init__( self, desktopFile, iconSize )
|
||||
ApplicationLauncher.__init__(self, desktopFile, iconSize)
|
||||
|
||||
def setupLabels( self ):
|
||||
def setupLabels(self):
|
||||
if self.appGenericName:
|
||||
if self.swapGeneric:
|
||||
self.addLabel( '<span weight="bold">%s</span>' % self.appName )
|
||||
self.addLabel( self.appGenericName )
|
||||
self.addLabel('<span weight="bold">%s</span>' % self.appName)
|
||||
self.addLabel(self.appGenericName)
|
||||
else:
|
||||
self.addLabel( '<span weight="bold">%s</span>' % self.appGenericName )
|
||||
self.addLabel( self.appName )
|
||||
self.addLabel('<span weight="bold">%s</span>' % self.appGenericName)
|
||||
self.addLabel(self.appName)
|
||||
else:
|
||||
self.addLabel( '<span weight="bold">%s</span>' % self.appName )
|
||||
self.addLabel('<span weight="bold">%s</span>' % self.appName)
|
||||
if self.appComment != "":
|
||||
self.addLabel( self.appComment )
|
||||
self.addLabel(self.appComment)
|
||||
else:
|
||||
self.addLabel ( "" )
|
||||
self.addLabel("")
|
||||
|
||||
def setSwapGeneric( self, swapGeneric ):
|
||||
def setSwapGeneric(self, swapGeneric):
|
||||
self.swapGeneric = swapGeneric
|
||||
for child in self.labelBox:
|
||||
child.destroy()
|
||||
|
||||
self.setupLabels()
|
||||
|
||||
class CategoryButton(easyButton):
|
||||
|
||||
class CategoryButton( easyButton ):
|
||||
|
||||
def __init__( self, iconName, iconSize, labels , f ):
|
||||
easyButton.__init__( self, iconName, iconSize, labels )
|
||||
def __init__(self, iconName, iconSize, labels , f):
|
||||
easyButton.__init__(self, iconName, iconSize, labels, ellipsis=False)
|
||||
self.filter = f
|
||||
|
||||
|
||||
iconManager = IconManager()
|
||||
|
@ -1,14 +0,0 @@
|
||||
#!/usr/bin/python2
|
||||
|
||||
import os
|
||||
import os.path
|
||||
import urllib
|
||||
|
||||
def GetFilePath(uri):
|
||||
path = urllib.url2pathname(uri) # escape special chars
|
||||
path = path.strip('\r\n\x00') # remove \r\n and NULL
|
||||
|
||||
# get the path to file
|
||||
if path.startswith('file://'): # nautilus, rox
|
||||
path = path[7:] # 7 is len('file://')
|
||||
return path
|
@ -1,94 +0,0 @@
|
||||
#!/usr/bin/python2
|
||||
|
||||
|
||||
from gi.repository import Gio
|
||||
|
||||
class EasyGSettings:
|
||||
|
||||
def __init__( self, schema = None ):
|
||||
self.schema = schema
|
||||
self.settings = Gio.Settings.new(self.schema)
|
||||
self.handlerIds = [ ]
|
||||
|
||||
def get( self, type, key ):
|
||||
|
||||
if type == "bool":
|
||||
return self.settings.get_boolean( key )
|
||||
if type == "string":
|
||||
return self.settings.get_string( key )
|
||||
if type == "int":
|
||||
return self.settings.get_int( key )
|
||||
if type == "color":
|
||||
color = self.settings.get_string( key )
|
||||
if not self.evalColor( color ):
|
||||
self.settings.set_string(key, "#ffffff")
|
||||
return "#ffffff"
|
||||
return color
|
||||
|
||||
t = type.split("-")
|
||||
if len(t) == 2 and t[0] == "list":
|
||||
return self.settings.get_strv( key )
|
||||
|
||||
return self.settings.get( key )
|
||||
|
||||
def set( self, type, key, value ):
|
||||
|
||||
if type == "bool":
|
||||
return self.settings.set_boolean( key, value )
|
||||
|
||||
if type == "string":
|
||||
return self.settings.set_string( key, value )
|
||||
|
||||
if type == "int":
|
||||
return self.settings.set_int( key, value )
|
||||
|
||||
if type == "color":
|
||||
if self.evalColor( value ):
|
||||
return self.settings.set_string( key, value )
|
||||
else:
|
||||
return self.settings.set_string( key, "#ffffff" )
|
||||
|
||||
t = type.split("-")
|
||||
if len(t) == 2 and t[0] == "list":
|
||||
return self.settings.set_strv( key, value )
|
||||
|
||||
return self.settings.set( key, value )
|
||||
|
||||
def notifyAdd( self, key, callback, args = None ):
|
||||
handlerId = self.settings.connect("changed::"+key, callback, args)
|
||||
self.handlerIds.append( handlerId )
|
||||
return handlerId
|
||||
|
||||
def notifyRemove( self, handlerId ):
|
||||
return self.settings.disconnect(handlerId)
|
||||
|
||||
def notifyRemoveAll( self ):
|
||||
for handlerId in self.handlerIds:
|
||||
self.settings.disconnect( handlerId )
|
||||
|
||||
def evalColor(self, colorToTest ):
|
||||
if colorToTest[0] != '#' or len( colorToTest ) != 7:
|
||||
return False
|
||||
for i in colorToTest[1:]:
|
||||
if i not in ['a', 'A', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E', 'f', 'F', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
|
||||
return False
|
||||
return True
|
||||
|
||||
def bindGSettingsEntryToVar( self, type, key, obj, varName ):
|
||||
return self.notifyAdd( key, self.setVar, ( type, obj, varName ) )
|
||||
|
||||
def setVar( self, settings, key, args ):
|
||||
type, obj, varName = args
|
||||
|
||||
if type == "string":
|
||||
setattr( obj, varName, settings.get_string(key) )
|
||||
elif type == "int":
|
||||
setattr( obj, varName, settings.get_int(key) )
|
||||
elif type == "float":
|
||||
setattr( obj, varName, settings.get_float(key) )
|
||||
elif type == "bool":
|
||||
setattr( obj, varName, settings.get_boolean(key) )
|
||||
else:
|
||||
setattr( obj, varName, settings.get_value(key) )
|
||||
|
||||
|
@ -1,47 +1,75 @@
|
||||
#!/usr/bin/python2
|
||||
#!/usr/bin/python3
|
||||
|
||||
import os
|
||||
from gi.repository import Gio, GLib, Gdk, XApp
|
||||
|
||||
|
||||
def RemoveArgs(Execline):
|
||||
NewExecline = []
|
||||
Specials=["\"%c\"", "%f","%F","%u","%U","%d","%D","%n","%N","%i","%c","%k","%v","%m","%M", "-caption", "/bin/sh", "sh", "-c", "STARTED_FROM_MENU=yes"]
|
||||
for elem in Execline:
|
||||
elem = elem.replace("'","")
|
||||
elem = elem.replace("\"", "")
|
||||
if elem not in Specials:
|
||||
print elem
|
||||
NewExecline.append(elem)
|
||||
return NewExecline
|
||||
if isinstance(Execline, list):
|
||||
Execline = ' '.join(Execline)
|
||||
|
||||
Specials = ["%f", "%F", "%u", "%U", "%d", "%D", "%n", "%N", "%i", "%c", "%k", "%v", "%m", "%M",
|
||||
"STARTED_FROM_MENU=yes"]
|
||||
for spec in Specials:
|
||||
if spec in Execline:
|
||||
Execline = Execline.replace(spec, "")
|
||||
|
||||
return Execline
|
||||
|
||||
def dummy_child_watch (pid, status, data):
|
||||
# Do nothing, this is just to ensure we don't double fork
|
||||
# and break pkexec: https://bugzilla.gnome.org/show_bug.cgi?id=675789
|
||||
pass
|
||||
|
||||
def gather_pid_callback(appinfo, pid, data):
|
||||
GLib.child_watch_add(pid, dummy_child_watch, None)
|
||||
|
||||
# Actually execute the command
|
||||
def Execute( cmd , commandCwd=None):
|
||||
if not commandCwd:
|
||||
cwd = os.path.expanduser( "~" );
|
||||
else:
|
||||
tmpCwd = os.path.expanduser( commandCwd );
|
||||
def Execute(cmd , commandCwd=None, desktopFile=None, offload=False):
|
||||
if desktopFile:
|
||||
launcher = Gio.DesktopAppInfo.new_from_filename(desktopFile)
|
||||
context = Gdk.Display.get_default().get_app_launch_context()
|
||||
if offload:
|
||||
print("Offloading '%s' to discrete gpu." % launcher.get_name());
|
||||
|
||||
try:
|
||||
helper = XApp.GpuOffloadHelper.get_sync()
|
||||
infos = helper.get_offload_infos()
|
||||
|
||||
if infos:
|
||||
i = 0
|
||||
env_strv = infos[0].env_strv
|
||||
while i < len(env_strv):
|
||||
context.setenv(env_strv[i], env_strv[i + 1])
|
||||
i += 2
|
||||
except AttributeError:
|
||||
context.setenv("__NV_PRIME_RENDER_OFFLOAD", "1")
|
||||
context.setenv("__GLX_VENDOR_LIBRARY_NAME", "nvidia");
|
||||
|
||||
try:
|
||||
retval = launcher.launch_uris_as_manager(uris=[],
|
||||
launch_context=context,
|
||||
spawn_flags=GLib.SpawnFlags.SEARCH_PATH|GLib.SpawnFlags.DO_NOT_REAP_CHILD,
|
||||
user_setup=None, user_setup_data=None,
|
||||
pid_callback=gather_pid_callback, pid_callback_data=None)
|
||||
return retval
|
||||
except GLib.Error as e:
|
||||
print("Error launching %s: %s" % (launcher.get_name(), e.message))
|
||||
return False
|
||||
|
||||
cwd = os.path.expanduser("~")
|
||||
|
||||
if commandCwd:
|
||||
tmpCwd = os.path.expanduser(commandCwd)
|
||||
if (os.path.exists(tmpCwd)):
|
||||
cwd = tmpCwd
|
||||
|
||||
if isinstance( cmd, str ) or isinstance( cmd, unicode):
|
||||
if (cmd.find("ubiquity") >= 0) or (cmd.find("/home/") >= 0) or (cmd.find("su-to-root") >= 0) or (cmd.find("xdg-su") >= 0) or (cmd.find("\"") >= 0):
|
||||
print "running manually..."
|
||||
try:
|
||||
os.chdir(cwd)
|
||||
os.system(cmd + " &")
|
||||
return True
|
||||
except Exception, detail:
|
||||
print detail
|
||||
return False
|
||||
cmd = cmd.split()
|
||||
cmd = RemoveArgs(cmd)
|
||||
|
||||
try:
|
||||
os.chdir( cwd )
|
||||
string = ' '.join(cmd)
|
||||
string = string + " &"
|
||||
os.system(string)
|
||||
os.chdir(cwd)
|
||||
os.system(cmd + " &")
|
||||
return True
|
||||
except Exception, detail:
|
||||
print detail
|
||||
except Exception as e:
|
||||
print(e)
|
||||
return False
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/usr/bin/python2
|
||||
#!/usr/bin/python3
|
||||
|
||||
import os
|
||||
import os.path
|
||||
@ -12,65 +12,66 @@ try:
|
||||
except ImportError:
|
||||
hasInotify = False
|
||||
|
||||
|
||||
if hasInotify:
|
||||
|
||||
class FileMonitor(object):
|
||||
def __init__( self ):
|
||||
def __init__(self):
|
||||
self.monitorId = 0
|
||||
self.wm = pyinotify.WatchManager()
|
||||
self.wdds = {}
|
||||
self.callbacks = {}
|
||||
self.notifier = pyinotify.ThreadedNotifier(self.wm, self.fileChanged)
|
||||
self.notifier.setDaemon( True )
|
||||
self.notifier.setDaemon(True)
|
||||
self.notifier.start()
|
||||
|
||||
|
||||
def addMonitor( self, filename, callback, args = None ):
|
||||
def addMonitor(self, filename, callback, args = None):
|
||||
try:
|
||||
mask = pyinotify.IN_DELETE | pyinotify.IN_CREATE | pyinotify.IN_MODIFY
|
||||
mId = self.wm.add_watch( filename, mask, rec = True)[filename]
|
||||
mId = self.wm.add_watch(filename, mask, rec = True)[filename]
|
||||
if mId >= 0:
|
||||
self.callbacks[mId] = ( callback, args )
|
||||
except Exception, detail:
|
||||
self.callbacks[mId] = (callback, args)
|
||||
except:
|
||||
mId = 0
|
||||
return mId
|
||||
|
||||
def removeMonitor( self, monitorId ):
|
||||
def removeMonitor(self, monitorId):
|
||||
if monitorId in self.callbacks:
|
||||
self.wm.rm_watch( monitorId )
|
||||
self.wm.rm_watch(monitorId)
|
||||
del self.callbacks[monitorId]
|
||||
|
||||
def fileChanged(self, event ):
|
||||
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] )
|
||||
GLib.idle_add(callback[0], callback[1])
|
||||
else:
|
||||
GLib.idle_add( callback[0] )
|
||||
|
||||
GLib.idle_add(callback[0])
|
||||
|
||||
else:
|
||||
|
||||
class _MonitoredFile( object ):
|
||||
def __init__( self, filename, callback, monitorId, args ):
|
||||
class _MonitoredFile(object):
|
||||
def __init__(self, filename, callback, monitorId, args):
|
||||
self.filename = filename
|
||||
self.callback = callback
|
||||
self.monitorId = monitorId
|
||||
self.args = args
|
||||
self.exists = os.path.exists( self.filename )
|
||||
self.exists = os.path.exists(self.filename)
|
||||
if self.exists:
|
||||
self.mtime = os.stat( filename ).st_mtime
|
||||
self.mtime = os.stat(filename).st_mtime
|
||||
else:
|
||||
self.mtime = 0
|
||||
|
||||
def hasChanged( self ):
|
||||
if os.path.exists( self.filename ):
|
||||
def hasChanged(self):
|
||||
if os.path.exists(self.filename):
|
||||
if not self.exists:
|
||||
self.exists = True
|
||||
self.mtime = os.stat( self.filename ).st_mtime
|
||||
self.mtime = os.stat(self.filename).st_mtime
|
||||
return True
|
||||
else:
|
||||
mtime = os.stat( self.filename ).st_mtime
|
||||
mtime = os.stat(self.filename).st_mtime
|
||||
if mtime != self.mtime:
|
||||
self.mtime = mtime
|
||||
return True
|
||||
@ -83,7 +84,7 @@ else:
|
||||
|
||||
class MonitorThread(threading.Thread):
|
||||
def __init__(self, monitor):
|
||||
threading.Thread.__init__ ( self )
|
||||
threading.Thread.__init__(self)
|
||||
self.monitor = monitor
|
||||
|
||||
def run(self):
|
||||
@ -91,34 +92,31 @@ else:
|
||||
self.monitor.checkFiles()
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
|
||||
class FileMonitor(object):
|
||||
def __init__( self ):
|
||||
def __init__(self):
|
||||
self.monitorId = 0
|
||||
self.monitoredFiles = []
|
||||
self.monitorThread = MonitorThread( self )
|
||||
self.monitorThread.setDaemon( True )
|
||||
self.monitorThread = MonitorThread(self)
|
||||
self.monitorThread.setDaemon(True)
|
||||
self.monitorThread.start()
|
||||
|
||||
def addMonitor( self, filename, callback, args = None ):
|
||||
def addMonitor(self, filename, callback, args = None):
|
||||
self.monitorId += 1
|
||||
self.monitoredFiles.append( _MonitoredFile( filename, callback, self.monitorId, args ) )
|
||||
self.monitoredFiles.append(_MonitoredFile(filename, callback, self.monitorId, args))
|
||||
return self.monitorId
|
||||
|
||||
def removeMonitor( self, monitorId ):
|
||||
def removeMonitor(self, monitorId):
|
||||
for monitored in self.monitoredFiles:
|
||||
if monitorId == monitored.monitorId:
|
||||
self.monitoredFiles.remove( monitored )
|
||||
self.monitoredFiles.remove(monitored)
|
||||
break
|
||||
|
||||
def checkFiles( self ):
|
||||
def checkFiles(self):
|
||||
for monitored in self.monitoredFiles:
|
||||
if monitored.hasChanged():
|
||||
if monitored.args:
|
||||
GLib.idle_add( monitored.callback, monitored.args )
|
||||
GLib.idle_add(monitored.callback, monitored.args)
|
||||
else:
|
||||
GLib.idle_add( monitored.callback )
|
||||
|
||||
GLib.idle_add(monitored.callback)
|
||||
|
||||
monitor = FileMonitor()
|
||||
|
@ -1,16 +1,27 @@
|
||||
#!/usr/bin/python2
|
||||
#!/usr/bin/python3
|
||||
|
||||
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,24 +1,29 @@
|
||||
#!/usr/bin/python2
|
||||
#!/usr/bin/python3
|
||||
|
||||
from gi.repository import Gtk, Gio
|
||||
import locale
|
||||
import gettext
|
||||
import os
|
||||
import string
|
||||
import gettext
|
||||
import commands
|
||||
import time
|
||||
from glob import glob
|
||||
from urllib.parse import unquote
|
||||
|
||||
from easybuttons import *
|
||||
from easygsettings import EasyGSettings
|
||||
from execute import Execute
|
||||
from user import home
|
||||
from urllib import unquote
|
||||
import gi
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk, Gio, GLib
|
||||
|
||||
from plugins.easybuttons import easyButton
|
||||
from plugins.execute import Execute
|
||||
|
||||
# i18n
|
||||
gettext.install("mintmenu", "/usr/share/linuxmint/locale")
|
||||
locale.bindtextdomain("mintmenu", "/usr/share/linuxmint/locale")
|
||||
locale.textdomain("mintmenu")
|
||||
|
||||
class pluginclass( object ):
|
||||
home = os.path.expanduser("~")
|
||||
|
||||
def __init__( self, mintMenuWin, toggleButton, de ):
|
||||
class pluginclass(object):
|
||||
|
||||
def __init__(self, mintMenuWin, toggleButton, de):
|
||||
|
||||
self.mintMenuWin = mintMenuWin
|
||||
self.toggleButton = toggleButton
|
||||
@ -26,103 +31,98 @@ class pluginclass( object ):
|
||||
|
||||
# Read UI file
|
||||
builder = Gtk.Builder()
|
||||
builder.add_from_file(os.path.join( os.path.dirname( __file__ ), "places.glade" ))
|
||||
builder.set_translation_domain("mintmenu")
|
||||
builder.add_from_file("/usr/share/linuxmint/mintmenu/places.ui")
|
||||
|
||||
self.placesBtnHolder = builder.get_object( "places_button_holder" )
|
||||
self.editableBtnHolder = builder.get_object( "editable_button_holder" )
|
||||
self.placesBtnHolder = builder.get_object("places_button_holder")
|
||||
self.editableBtnHolder = builder.get_object("editable_button_holder")
|
||||
self.scrolledWindow=builder.get_object("scrolledwindow2")
|
||||
# These properties are NECESSARY to maintain consistency
|
||||
|
||||
# Set 'window' property for the plugin (Must be the root widget)
|
||||
self.window = builder.get_object( "mainWindow" )
|
||||
self.window = builder.get_object("mainWindow")
|
||||
|
||||
# Set 'heading' property for plugin
|
||||
self.heading = _("Places")
|
||||
|
||||
# This should be the first item added to the window in glade
|
||||
self.content_holder = builder.get_object( "Places" )
|
||||
self.content_holder = builder.get_object("Places")
|
||||
|
||||
# Items to get custom colors
|
||||
self.itemstocolor = [ builder.get_object( "viewport2" ) ]
|
||||
self.itemstocolor = [builder.get_object("viewport2")]
|
||||
|
||||
# Settings
|
||||
self.settings = EasyGSettings("com.linuxmint.mintmenu.plugins.places")
|
||||
self.settings = Gio.Settings("com.linuxmint.mintmenu.plugins.places")
|
||||
|
||||
self.settings.notifyAdd( "icon-size", self.RegenPlugin )
|
||||
self.settings.notifyAdd( "show-computer", self.RegenPlugin )
|
||||
self.settings.notifyAdd( "show-desktop", self.RegenPlugin )
|
||||
self.settings.notifyAdd( "show-home_folder", self.RegenPlugin )
|
||||
self.settings.notifyAdd( "show-network", self.RegenPlugin )
|
||||
self.settings.notifyAdd( "show-trash", self.RegenPlugin )
|
||||
self.settings.notifyAdd( "custom-names", self.RegenPlugin )
|
||||
self.settings.notifyAdd( "allow-scrollbar", self.RegenPlugin )
|
||||
self.settings.notifyAdd( "show-gtk-bookmarks", self.RegenPlugin )
|
||||
self.settings.notifyAdd( "height", self.changePluginSize )
|
||||
self.settings.notifyAdd( "width", self.changePluginSize )
|
||||
self.settings.connect("changed::icon-size", self.RegenPlugin)
|
||||
self.settings.connect("changed::show-computer", self.RegenPlugin)
|
||||
self.settings.connect("changed::show-desktop", self.RegenPlugin)
|
||||
self.settings.connect("changed::show-home_folder", self.RegenPlugin)
|
||||
self.settings.connect("changed::show-network", self.RegenPlugin)
|
||||
self.settings.connect("changed::show-trash", self.RegenPlugin)
|
||||
self.settings.connect("changed::custom-names", self.RegenPlugin)
|
||||
self.settings.connect("changed::allow-scrollbar", self.RegenPlugin)
|
||||
self.settings.connect("changed::show-gtk-bookmarks", self.RegenPlugin)
|
||||
self.settings.connect("changed::height", self.changePluginSize)
|
||||
self.settings.connect("changed::width", self.changePluginSize)
|
||||
|
||||
self.loadSettings()
|
||||
|
||||
self.content_holder.set_size_request( self.width, self.height )
|
||||
self.content_holder.set_size_request(self.width, self.height)
|
||||
|
||||
def wake (self) :
|
||||
if ( self.showtrash == True ):
|
||||
def wake(self):
|
||||
if self.showtrash:
|
||||
self.refreshTrash()
|
||||
|
||||
def destroy( self ):
|
||||
self.settings.notifyRemoveAll()
|
||||
|
||||
def changePluginSize( self, settings, key, args = None):
|
||||
self.allowScrollbar = self.settings.get( "bool", "allow-scrollbar" )
|
||||
self.width = self.settings.get( "int", "width" )
|
||||
if (self.allowScrollbar == False):
|
||||
def changePluginSize(self, settings, key):
|
||||
self.allowScrollbar = self.settings.get_boolean("allow-scrollbar")
|
||||
self.width = self.settings.get_int("width")
|
||||
if not self.allowScrollbar:
|
||||
self.height = -1
|
||||
self.scrolledWindow.set_policy( Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.NEVER )
|
||||
self.scrolledWindow.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.NEVER)
|
||||
else:
|
||||
self.scrolledWindow.set_policy( Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC )
|
||||
self.height = self.settings.get( "int", "height" )
|
||||
self.content_holder.set_size_request( self.width, self.height )
|
||||
self.scrolledWindow.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
|
||||
self.height = self.settings.get_int("height")
|
||||
self.content_holder.set_size_request(self.width, self.height)
|
||||
|
||||
def RegenPlugin( self, *args, **kargs ):
|
||||
def RegenPlugin(self, *args, **kargs):
|
||||
self.loadSettings()
|
||||
self.ClearAll()
|
||||
self.do_standard_places()
|
||||
self.do_custom_places()
|
||||
self.do_gtk_bookmarks()
|
||||
|
||||
def loadSettings( self ):
|
||||
self.width = self.settings.get( "int", "width" )
|
||||
self.allowScrollbar = self.settings.get( "bool", "allow-scrollbar" )
|
||||
self.showGTKBookmarks = self.settings.get( "bool", "show-gtk-bookmarks" )
|
||||
self.scrolledWindow.set_policy( Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC )
|
||||
self.height = self.settings.get( "int", "height" )
|
||||
self.content_holder.set_size_request( self.width, self.height )
|
||||
if (self.allowScrollbar == False):
|
||||
def loadSettings(self):
|
||||
self.width = self.settings.get_int("width")
|
||||
self.allowScrollbar = self.settings.get_boolean("allow-scrollbar")
|
||||
self.showGTKBookmarks = self.settings.get_boolean("show-gtk-bookmarks")
|
||||
self.scrolledWindow.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
|
||||
self.height = self.settings.get_int("height")
|
||||
self.content_holder.set_size_request(self.width, self.height)
|
||||
if not self.allowScrollbar:
|
||||
self.height = -1
|
||||
self.scrolledWindow.set_policy( Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.NEVER )
|
||||
self.content_holder.set_size_request( self.width, self.height )
|
||||
self.iconsize = self.settings.get( "int", "icon-size" )
|
||||
self.scrolledWindow.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.NEVER)
|
||||
self.content_holder.set_size_request(self.width, self.height)
|
||||
self.iconsize = self.settings.get_int("icon-size")
|
||||
|
||||
# Check default items
|
||||
|
||||
self.showcomputer = self.settings.get( "bool", "show-computer" )
|
||||
self.showhomefolder = self.settings.get( "bool", "show-home-folder" )
|
||||
self.shownetwork = self.settings.get( "bool", "show-network" )
|
||||
self.showdesktop = self.settings.get( "bool", "show-desktop" )
|
||||
self.showtrash = self.settings.get( "bool", "show-trash" )
|
||||
self.showcomputer = self.settings.get_boolean("show-computer")
|
||||
self.showhomefolder = self.settings.get_boolean("show-home-folder")
|
||||
self.shownetwork = self.settings.get_boolean("show-network")
|
||||
self.showdesktop = self.settings.get_boolean("show-desktop")
|
||||
self.showtrash = self.settings.get_boolean("show-trash")
|
||||
|
||||
# Get paths for custom items
|
||||
self.custompaths = self.settings.get( "list-string", "custom-paths" )
|
||||
self.custompaths = self.settings.get_strv("custom-paths")
|
||||
|
||||
# Get names for custom items
|
||||
self.customnames = self.settings.get( "list-string", "custom-names" )
|
||||
self.customnames = self.settings.get_strv("custom-names")
|
||||
|
||||
# Hide vertical dotted separator
|
||||
self.hideseparator = self.settings.get( "bool", "hide-separator" )
|
||||
self.hideseparator = self.settings.get_boolean("hide-separator")
|
||||
# Plugin icon
|
||||
self.icon = self.settings.get( "string", "icon" )
|
||||
# Allow plugin to be minimized to the left plugin pane
|
||||
self.sticky = self.settings.get( "bool", "sticky")
|
||||
self.minimized = self.settings.get( "bool", "minimized")
|
||||
self.icon = self.settings.get_string("icon")
|
||||
|
||||
def ClearAll(self):
|
||||
for child in self.placesBtnHolder.get_children():
|
||||
@ -131,44 +131,35 @@ class pluginclass( object ):
|
||||
child.destroy()
|
||||
|
||||
#Add standard places
|
||||
def do_standard_places( self ):
|
||||
def do_standard_places(self):
|
||||
|
||||
if ( self.showcomputer == True ):
|
||||
Button1 = easyButton( "computer", self.iconsize, [_("Computer")], -1, -1 )
|
||||
if self.de == "mate":
|
||||
Button1.connect( "clicked", self.ButtonClicked, "caja computer:" )
|
||||
else:
|
||||
Button1.connect( "clicked", self.ButtonClicked, "xdg-open /" )
|
||||
if self.showcomputer:
|
||||
Button1 = easyButton("computer", self.iconsize, [_("Computer")], -1, -1)
|
||||
Button1.connect("clicked", self.ButtonClicked, "xdg-open computer:")
|
||||
Button1.show()
|
||||
self.placesBtnHolder.pack_start( Button1, False, False, 0)
|
||||
self.mintMenuWin.setTooltip( Button1, _("Browse all local and remote disks and folders accessible from this computer") )
|
||||
self.placesBtnHolder.pack_start(Button1, False, False, 0)
|
||||
self.mintMenuWin.setTooltip(Button1, _("Browse all local and remote disks and folders accessible from this computer"))
|
||||
|
||||
if ( self.showhomefolder == True ):
|
||||
Button2 = easyButton( "user-home", self.iconsize, [_("Home Folder")], -1, -1 )
|
||||
if self.de == "mate":
|
||||
Button2.connect( "clicked", self.ButtonClicked, "caja %s " % home )
|
||||
else:
|
||||
Button2.connect( "clicked", self.ButtonClicked, "xdg-open %s " % home )
|
||||
if self.showhomefolder:
|
||||
Button2 = easyButton("user-home", self.iconsize, [_("Home Folder")], -1, -1)
|
||||
Button2.connect("clicked", self.ButtonClicked, "xdg-open %s " % home)
|
||||
Button2.show()
|
||||
self.placesBtnHolder.pack_start( Button2, False, False, 0)
|
||||
self.mintMenuWin.setTooltip( Button2, _("Open your personal folder") )
|
||||
self.placesBtnHolder.pack_start(Button2, False, False, 0)
|
||||
self.mintMenuWin.setTooltip(Button2, _("Open your personal folder"))
|
||||
|
||||
if ( self.shownetwork == True and self.de == "mate"):
|
||||
if self.shownetwork and self.de == "mate":
|
||||
mate_settings = Gio.Settings.new("org.mate.interface")
|
||||
icon_theme = mate_settings.get_string( "icon-theme" )
|
||||
icon_theme = mate_settings.get_string("icon-theme")
|
||||
if "Mint-X" in icon_theme:
|
||||
Button3 = easyButton( "notification-network-ethernet-connected", self.iconsize, [_("Network")], -1, -1)
|
||||
Button3 = easyButton("notification-network-ethernet-connected", self.iconsize, [_("Network")], -1, -1)
|
||||
else:
|
||||
Button3 = easyButton( "network-workgroup", self.iconsize, [_("Network")], -1, -1)
|
||||
if self.de == "mate":
|
||||
Button3.connect( "clicked", self.ButtonClicked, "caja network:" )
|
||||
else:
|
||||
Button3.connect( "clicked", self.ButtonClicked, "xdg-open network:" )
|
||||
Button3 = easyButton("network-workgroup", self.iconsize, [_("Network")], -1, -1)
|
||||
Button3.connect("clicked", self.ButtonClicked, "xdg-open network:")
|
||||
Button3.show()
|
||||
self.placesBtnHolder.pack_start( Button3, False, False, 0)
|
||||
self.mintMenuWin.setTooltip( Button3, _("Browse bookmarked and local network locations") )
|
||||
self.placesBtnHolder.pack_start(Button3, False, False, 0)
|
||||
self.mintMenuWin.setTooltip(Button3, _("Browse bookmarked and local network locations"))
|
||||
|
||||
if ( self.showdesktop == True ):
|
||||
if self.showdesktop:
|
||||
# Determine where the Desktop folder is (could be localized)
|
||||
desktopDir = home + "/Desktop"
|
||||
try:
|
||||
@ -179,50 +170,43 @@ class pluginclass( object ):
|
||||
tmpdesktopDir = config['XDG_DESKTOP_DIR']
|
||||
if os.path.exists(os.path.expandvars(tmpdesktopDir)):
|
||||
desktopDir = tmpdesktopDir
|
||||
except Exception, detail:
|
||||
print detail
|
||||
Button4 = easyButton( "desktop", self.iconsize, [_("Desktop")], -1, -1 )
|
||||
if self.de == "mate":
|
||||
Button4.connect( "clicked", self.ButtonClicked, "caja \"" + desktopDir + "\"")
|
||||
else:
|
||||
Button4.connect( "clicked", self.ButtonClicked, "xdg-open \"" + desktopDir + "\"")
|
||||
except Exception as e:
|
||||
print(e)
|
||||
Button4 = easyButton("desktop", self.iconsize, [_("Desktop")], -1, -1)
|
||||
Button4.connect("clicked", self.ButtonClicked, 'xdg-open "%s"' % desktopDir)
|
||||
Button4.show()
|
||||
self.placesBtnHolder.pack_start( Button4, False, False, 0)
|
||||
self.mintMenuWin.setTooltip( Button4, _("Browse items placed on the desktop") )
|
||||
self.placesBtnHolder.pack_start(Button4, False, False, 0)
|
||||
self.mintMenuWin.setTooltip(Button4, _("Browse items placed on the desktop"))
|
||||
|
||||
if ( self.showtrash == True ):
|
||||
self.trashButton = easyButton( "user-trash", self.iconsize, [_("Trash")], -1, -1 )
|
||||
if self.de == "xfce":
|
||||
self.trashButton.connect( "clicked", self.ButtonClicked, "thunar trash:" )
|
||||
elif self.de == "mate":
|
||||
self.trashButton.connect( "clicked", self.ButtonClicked, "caja trash:" )
|
||||
else:
|
||||
self.trashButton.connect( "clicked", self.ButtonClicked, "xdg-open trash:" )
|
||||
if self.showtrash:
|
||||
self.trashButton = easyButton("user-trash", self.iconsize, [_("Trash")], -1, -1)
|
||||
self.trashButton.connect("clicked", self.ButtonClicked, "xdg-open trash:")
|
||||
self.trashButton.show()
|
||||
self.trashButton.connect( "button-release-event", self.trashPopup )
|
||||
self.trashButton.connect("button-release-event", self.trashPopup)
|
||||
self.trash_path = os.path.join(home, ".local/share/Trash/info")
|
||||
self.refreshTrash()
|
||||
self.placesBtnHolder.pack_start( self.trashButton, False, False, 0)
|
||||
self.mintMenuWin.setTooltip( self.trashButton, _("Browse deleted files") )
|
||||
self.placesBtnHolder.pack_start(self.trashButton, False, False, 0)
|
||||
self.mintMenuWin.setTooltip(self.trashButton, _("Browse deleted files"))
|
||||
|
||||
def do_custom_places( self ):
|
||||
for index in range( len(self.custompaths) ):
|
||||
def do_custom_places(self):
|
||||
for index in range(len(self.custompaths)):
|
||||
path = self.custompaths[index]
|
||||
path = path.replace("~", home)
|
||||
if self.de == "mate":
|
||||
command = ( "caja \"" + path + "\"")
|
||||
else:
|
||||
command = ( "xdg-open \"" + path + "\"")
|
||||
currentbutton = easyButton( "folder", self.iconsize, [self.customnames[index]], -1, -1 )
|
||||
currentbutton.connect( "clicked", self.ButtonClicked, command )
|
||||
command = 'xdg-open "%s"' % path
|
||||
currentbutton = easyButton("folder", self.iconsize, [self.customnames[index]], -1, -1)
|
||||
currentbutton.connect("clicked", self.ButtonClicked, command)
|
||||
currentbutton.show()
|
||||
self.placesBtnHolder.pack_start( currentbutton, False, False, 0)
|
||||
self.placesBtnHolder.pack_start(currentbutton, False, False, 0)
|
||||
|
||||
def do_gtk_bookmarks( self ):
|
||||
def do_gtk_bookmarks(self):
|
||||
if self.showGTKBookmarks:
|
||||
if not os.path.exists(os.path.expanduser('~/.gtk-bookmarks')):
|
||||
bookmarksFile = os.path.join(GLib.get_user_config_dir(), "gtk-3.0", "bookmarks")
|
||||
if not os.path.exists(bookmarksFile):
|
||||
bookmarksFile = os.path.join(GLib.get_home_dir(), ".gtk-bookmarks")
|
||||
if not os.path.exists(bookmarksFile):
|
||||
return
|
||||
bookmarks = []
|
||||
with open(os.path.expanduser('~/.gtk-bookmarks'), 'r') as f:
|
||||
with open(bookmarksFile, "r") as f:
|
||||
for line in f:
|
||||
#line = line.replace('file://', '')
|
||||
line = line.rstrip()
|
||||
@ -239,48 +223,44 @@ class pluginclass( object ):
|
||||
|
||||
for name, path in bookmarks:
|
||||
name = unquote(name)
|
||||
currentbutton = easyButton( "folder", self.iconsize, [name], -1, -1 )
|
||||
currentbutton.connect( "clicked", self.launch_gtk_bookmark, path )
|
||||
currentbutton = easyButton("folder", self.iconsize, [name], -1, -1)
|
||||
currentbutton.connect("clicked", self.launch_gtk_bookmark, path)
|
||||
currentbutton.show()
|
||||
self.placesBtnHolder.pack_start( currentbutton, False, False, 0)
|
||||
self.placesBtnHolder.pack_start(currentbutton, False, False, 0)
|
||||
|
||||
def launch_gtk_bookmark (self, widget, path):
|
||||
def launch_gtk_bookmark(self, widget, path):
|
||||
self.mintMenuWin.hide()
|
||||
if self.de == "mate":
|
||||
os.system("caja \"%s\" &" % path)
|
||||
else:
|
||||
os.system("xdg-open \"%s\" &" % path)
|
||||
os.system("xdg-open \"%s\" &" % path)
|
||||
|
||||
def trashPopup( self, widget, event ):
|
||||
def trashPopup(self, widget, event):
|
||||
if event.button == 3:
|
||||
trashMenu = Gtk.Menu()
|
||||
emptyTrashMenuItem = Gtk.MenuItem(_("Empty trash"))
|
||||
trashMenu.append(emptyTrashMenuItem)
|
||||
trashMenu.show_all()
|
||||
emptyTrashMenuItem.connect ( "activate", self.emptyTrash, widget )
|
||||
emptyTrashMenuItem.connect("activate", self.emptyTrash, widget)
|
||||
self.mintMenuWin.stopHiding()
|
||||
trashMenu.attach_to_widget(widget, None)
|
||||
trashMenu.popup(None, None, None, None, 3, 0)
|
||||
|
||||
def emptyTrash( self, menu, widget):
|
||||
def emptyTrash(self, menu, widget):
|
||||
os.system("rm -rf " + home + "/.local/share/Trash/info/*")
|
||||
os.system("rm -rf " + home + "/.local/share/Trash/files/*")
|
||||
self.trashButton.setIcon("user-trash")
|
||||
|
||||
def ButtonClicked( self, widget, Exec ):
|
||||
def ButtonClicked(self, widget, Exec):
|
||||
self.mintMenuWin.hide()
|
||||
if Exec:
|
||||
Execute( Exec )
|
||||
Execute(Exec)
|
||||
|
||||
def do_plugin( self ):
|
||||
def do_plugin(self):
|
||||
self.do_standard_places()
|
||||
self.do_custom_places()
|
||||
self.do_gtk_bookmarks()
|
||||
|
||||
def refreshTrash (self):
|
||||
iconName = "user-trash"
|
||||
if (os.path.exists(home + "/.local/share/Trash/info")):
|
||||
infoFiles = commands.getoutput("ls " + home + "/.local/share/Trash/info/ | wc -l")
|
||||
if (int(infoFiles) > 0):
|
||||
iconName = "user-trash-full"
|
||||
def refreshTrash(self):
|
||||
if os.path.exists(self.trash_path) and glob(os.path.join(self.trash_path, "*")):
|
||||
iconName = "user-trash-full"
|
||||
else:
|
||||
iconName = "user-trash"
|
||||
self.trashButton.setIcon(iconName)
|
||||
|
@ -1,40 +1,55 @@
|
||||
#!/usr/bin/python2
|
||||
#!/usr/bin/python3
|
||||
|
||||
import gettext
|
||||
import locale
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
import gi
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk, Gio, Pango
|
||||
|
||||
from gi.repository import Gtk, Pango
|
||||
import os
|
||||
from easygsettings import EasyGSettings
|
||||
from execute import Execute
|
||||
from easyfiles import *
|
||||
from easybuttons import *
|
||||
import plugins.recentHelper as RecentHelper
|
||||
from plugins.execute import Execute
|
||||
|
||||
home = os.path.expanduser("~")
|
||||
|
||||
# i18n
|
||||
gettext.install("mintmenu", "/usr/share/linuxmint/locale")
|
||||
locale.bindtextdomain("mintmenu", "/usr/share/linuxmint/locale")
|
||||
locale.textdomain("mintmenu")
|
||||
|
||||
class pluginclass:
|
||||
"""This is the main class for the plugin"""
|
||||
"""It MUST be named pluginclass"""
|
||||
""" This is the main class for the plugin.
|
||||
It MUST be named pluginclass
|
||||
"""
|
||||
|
||||
def __init__( self, mintMenuWin, toggleButton, de ):
|
||||
def __init__(self, mintMenuWin, toggleButton, de):
|
||||
|
||||
self.Win = mintMenuWin
|
||||
self.toggleButton = toggleButton
|
||||
self.de = de
|
||||
|
||||
self.builder = Gtk.Builder()
|
||||
#The Glade file for the plugin
|
||||
self.builder.add_from_file (os.path.join( os.path.dirname( __file__ ), "recent.glade" ))
|
||||
self.builder.set_translation_domain("mintmenu")
|
||||
self.builder.add_from_file("/usr/share/linuxmint/mintmenu/recent.ui")
|
||||
|
||||
#Set 'window' property for the plugin (Must be the root widget)
|
||||
self.window = self.builder.get_object( "window1" )
|
||||
self.window = self.builder.get_object("window1")
|
||||
|
||||
#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
|
||||
self.content_holder = self.builder.get_object( "eventbox1" )
|
||||
self.content_holder = self.builder.get_object("eventbox1")
|
||||
|
||||
self.recentBox = self.builder.get_object("RecentBox")
|
||||
self.recentVBox = self.builder.get_object( "vbox1" )
|
||||
self.recentAppBox = self.builder.get_object("RecentApps")
|
||||
RecentHelper.recentAppBox = self.recentAppBox
|
||||
|
||||
#self.recentApps = []
|
||||
|
||||
self.recentVBox = self.builder.get_object("vbox1")
|
||||
|
||||
#Specify plugin width
|
||||
self.width = 250
|
||||
@ -42,100 +57,113 @@ class pluginclass:
|
||||
#Plugin icon
|
||||
self.icon = 'mate-folder.png'
|
||||
|
||||
self.settings = EasyGSettings ("com.linuxmint.mintmenu.plugins.recent")
|
||||
self.settings = Gio.Settings("com.linuxmint.mintmenu.plugins.recent")
|
||||
RecentHelper.settings = self.settings
|
||||
|
||||
self.settings.notifyAdd( 'height', self.RegenPlugin )
|
||||
self.settings.notifyAdd( 'width', self.RegenPlugin )
|
||||
self.settings.notifyAdd( 'num-recent-docs', self.RegenPlugin )
|
||||
self.settings.notifyAdd( 'recent-font-size', self.RegenPlugin )
|
||||
self.migrate_recent_apps()
|
||||
self.settings.connect('changed', self.RegenPlugin)
|
||||
|
||||
self.appSettings = Gio.Settings("com.linuxmint.mintmenu.plugins.applications")
|
||||
self.appSettings.connect("changed::icon-size", self.RegenPlugin)
|
||||
|
||||
self.FileList=[]
|
||||
self.RecManagerInstance = Gtk.RecentManager.get_default()
|
||||
self.recentManagerId = self.RecManagerInstance.connect("changed", self.DoRecent)
|
||||
|
||||
self.RegenPlugin()
|
||||
self.builder.get_object( "RecentTabs" ).set_current_page(1)
|
||||
self.builder.get_object("RecentTabs").set_current_page(0)
|
||||
|
||||
#Connect event handlers
|
||||
self.builder.get_object("ClrBtn").connect("clicked", self.clrmenu)
|
||||
|
||||
def wake (self) :
|
||||
pass
|
||||
@staticmethod
|
||||
def wake():
|
||||
return
|
||||
|
||||
def destroy( self ):
|
||||
def destroy(self):
|
||||
self.recentBox.destroy()
|
||||
self.recentVBox.destroy()
|
||||
self.builder.get_object( "RecentTabs" ).destroy()
|
||||
self.builder.get_object("RecentTabs").destroy()
|
||||
self.builder.get_object("ClrBtn").destroy()
|
||||
self.content_holder.destroy()
|
||||
self.settings.notifyRemoveAll()
|
||||
if self.recentManagerId:
|
||||
self.RecManagerInstance.disconnect(self.recentManagerId)
|
||||
|
||||
def RegenPlugin( self, *args, **kargs ):
|
||||
def RegenPlugin(self, *args, **kargs):
|
||||
self.GetGSettingsEntries()
|
||||
|
||||
def GetGSettingsEntries( self ):
|
||||
self.recenth = self.settings.get( 'int', 'height' )
|
||||
self.recentw = self.settings.get( 'int', 'width' )
|
||||
self.numentries = self.settings.get( 'int', 'num-recent-docs' )
|
||||
self.recentfontsize = self.settings.get( 'int', 'recent-font-size' )
|
||||
def migrate_recent_apps(self):
|
||||
if self.settings.get_strv("recent-apps-list") != []:
|
||||
return
|
||||
|
||||
path = os.path.join(home, ".linuxmint/mintMenu/recentApplications.list")
|
||||
if os.path.exists(path):
|
||||
with open(path) as f:
|
||||
self.settings.set_strv("recent-apps-list", f.readlines())
|
||||
|
||||
try:
|
||||
os.unlink(path)
|
||||
except:
|
||||
pass
|
||||
|
||||
def GetGSettingsEntries(self):
|
||||
self.recenth = self.settings.get_int("height")
|
||||
self.recentw = self.settings.get_int("width")
|
||||
self.numentries = self.settings.get_int("num-recent-docs")
|
||||
RecentHelper.numentries = self.numentries
|
||||
self.recentfontsize = self.settings.get_int("recent-font-size")
|
||||
|
||||
# Hide vertical dotted separator
|
||||
self.hideseparator = self.settings.get( "bool", "hide-separator" )
|
||||
self.hideseparator = self.settings.get_boolean("hide-separator")
|
||||
# Plugin icon
|
||||
self.icon = self.settings.get( "string", 'icon' )
|
||||
# Allow plugin to be minimized to the left plugin pane
|
||||
self.sticky = self.settings.get( "bool", "sticky" )
|
||||
self.minimized = self.settings.get( "bool", "minimized" )
|
||||
self.icon = self.settings.get_string("icon")
|
||||
RecentHelper.iconSize = self.appSettings.get_int("icon-size")
|
||||
self.RebuildPlugin()
|
||||
|
||||
def SetHidden( self, state ):
|
||||
if state == True:
|
||||
self.settings.set( "bool", "minimized", True )
|
||||
else:
|
||||
self.settings.set( "bool", "minimized", False )
|
||||
|
||||
|
||||
def RebuildPlugin(self):
|
||||
self.content_holder.set_size_request(self.recentw, self.recenth )
|
||||
self.content_holder.set_size_request(self.recentw, self.recenth)
|
||||
self.DoRecent()
|
||||
|
||||
|
||||
def DoRecent( self, *args, **kargs ):
|
||||
def DoRecent(self, *args, **kargs):
|
||||
for i in self.recentBox.get_children():
|
||||
i.destroy()
|
||||
|
||||
self.recentVBox.set_size_request( self.recentw, self.recenth )
|
||||
if len( self.recentBox.get_children() ) < self.numentries:
|
||||
n=len( self.recentBox.get_children() )-1
|
||||
self.recentVBox.set_size_request(self.recentw, self.recenth)
|
||||
if len(self.recentBox.get_children()) < self.numentries:
|
||||
n=len(self.recentBox.get_children())-1
|
||||
else:
|
||||
n=self.numentries-1
|
||||
while n >= 0:
|
||||
self.recentBox.remove( self.recentBox.get_children()[n] )
|
||||
self.recentBox.remove(self.recentBox.get_children()[n])
|
||||
n-=1
|
||||
|
||||
self.FileList, self.IconList = self.GetRecent()
|
||||
loc = 0
|
||||
for Name in self.FileList:
|
||||
if Name != None:
|
||||
self.AddRecentBtn( Name, self.IconList[loc] )
|
||||
self.AddRecentBtn(Name, self.IconList[loc])
|
||||
loc = loc + 1
|
||||
|
||||
RecentHelper.doRecentApps()
|
||||
|
||||
return True
|
||||
|
||||
def clrmenu(self, *args, **kargs):
|
||||
self.RecManagerInstance.purge_items()
|
||||
if self.builder.get_object("RecentTabs").get_current_page() == 0: # files
|
||||
self.RecManagerInstance.purge_items()
|
||||
else: # apps
|
||||
self.settings.reset("recent-apps-list")
|
||||
|
||||
self.DoRecent()
|
||||
return
|
||||
|
||||
def AddRecentBtn( self, Name, RecentImage ):
|
||||
DispName=os.path.basename( Name )
|
||||
def AddRecentBtn(self, Name, RecentImage):
|
||||
DispName=os.path.basename(Name)
|
||||
|
||||
AButton = Gtk.Button( "", "ok", True )
|
||||
AButton.remove( AButton.get_children()[0] )
|
||||
AButton.set_size_request( 200, -1 )
|
||||
AButton.set_relief( Gtk.ReliefStyle.NONE )
|
||||
AButton.connect( "clicked", self.callback, Name )
|
||||
AButton = Gtk.Button("", "ok", True)
|
||||
AButton.remove(AButton.get_children()[0])
|
||||
AButton.set_size_request(200, -1)
|
||||
AButton.set_relief(Gtk.ReliefStyle.NONE)
|
||||
AButton.connect("clicked", self.callback, Name)
|
||||
AButton.show()
|
||||
|
||||
Box1 = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
|
||||
@ -145,38 +173,31 @@ class pluginclass:
|
||||
ButtonIcon.set_from_pixbuf(RecentImage)
|
||||
Box1.add(ButtonIcon)
|
||||
|
||||
Label1 = Gtk.Label( DispName )
|
||||
Label1.set_ellipsize( Pango.EllipsizeMode.END )
|
||||
Box1.add( Label1 )
|
||||
Label1 = Gtk.Label(DispName)
|
||||
Label1.set_ellipsize(Pango.EllipsizeMode.END)
|
||||
Box1.add(Label1)
|
||||
|
||||
AButton.add( Box1 )
|
||||
AButton.add(Box1)
|
||||
AButton.show_all()
|
||||
|
||||
self.recentBox.pack_start( AButton, False, True, 0 )
|
||||
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)
|
||||
RecentInfo=sorted(self.RecManagerInstance.get_items(), key=lambda item: item.get_modified(), reverse=True)
|
||||
count=0
|
||||
MaxEntries=self.numentries
|
||||
if self.numentries == -1:
|
||||
@ -187,26 +208,26 @@ class pluginclass:
|
||||
count+=1
|
||||
if count >= MaxEntries:
|
||||
break
|
||||
return FileString, IconString
|
||||
return FileString, IconString
|
||||
|
||||
|
||||
def ButtonClicked( self, widget, event, Exec ):
|
||||
def ButtonClicked(self, widget, event, Exec):
|
||||
self.press_x = event.x
|
||||
self.press_y = event.y
|
||||
self.Exec = Exec
|
||||
|
||||
def ButtonReleased( self, w, ev, ev2 ):
|
||||
def ButtonReleased(self, w, ev, ev2):
|
||||
if ev.button == 1:
|
||||
if not hasattr( self, "press_x" ) or \
|
||||
not w.drag_check_threshold( int( self.press_x ),
|
||||
int( self.press_y ),
|
||||
int( ev.x ),
|
||||
int( ev.y ) ):
|
||||
if not hasattr(self, "press_x") or \
|
||||
not w.drag_check_threshold(int(self.press_x),
|
||||
int(self.press_y),
|
||||
int(ev.x),
|
||||
int(ev.y)):
|
||||
if self.Win.pinmenu == False:
|
||||
self.Win.wTree.get_widget( "window1" ).hide()
|
||||
self.Win.wTree.get_widget("window1").hide()
|
||||
if "applications" in self.Win.plugins:
|
||||
self.Win.plugins["applications"].wTree.get_widget( "entry1" ).grab_focus()
|
||||
Execute( w, self.Exec )
|
||||
self.Win.plugins["applications"].wTree.get_widget("entry1").grab_focus()
|
||||
Execute(w, self.Exec)
|
||||
|
||||
def do_plugin(self):
|
||||
self.DoRecent()
|
||||
@staticmethod
|
||||
def do_plugin():
|
||||
return
|
||||
|
124
usr/lib/linuxmint/mintMenu/plugins/recentHelper.py
Normal file
124
usr/lib/linuxmint/mintMenu/plugins/recentHelper.py
Normal file
@ -0,0 +1,124 @@
|
||||
#!/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()
|
||||
|
||||
if settings == None:
|
||||
return
|
||||
|
||||
recentAppsAdd(widget)
|
||||
recentAppsSave()
|
||||
doRecentApps()
|
@ -1,117 +1,111 @@
|
||||
#!/usr/bin/python2
|
||||
#!/usr/bin/python3
|
||||
|
||||
import gettext
|
||||
import os
|
||||
import locale
|
||||
|
||||
import gi
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk, Gio
|
||||
|
||||
from gi.repository import Gtk
|
||||
import os
|
||||
import string
|
||||
import gettext
|
||||
|
||||
from easybuttons import *
|
||||
from execute import Execute
|
||||
from easygsettings import EasyGSettings
|
||||
from plugins.easybuttons import easyButton
|
||||
from plugins.execute import Execute
|
||||
|
||||
# i18n
|
||||
gettext.install("mintmenu", "/usr/share/linuxmint/locale")
|
||||
locale.bindtextdomain("mintmenu", "/usr/share/linuxmint/locale")
|
||||
locale.textdomain("mintmenu")
|
||||
|
||||
class pluginclass( object ):
|
||||
class pluginclass(object):
|
||||
|
||||
def __init__( self, mintMenuWin, toggleButton, de ):
|
||||
def __init__(self, mintMenuWin, toggleButton, de):
|
||||
|
||||
self.mintMenuWin = mintMenuWin
|
||||
self.toggleButton = toggleButton
|
||||
self.de = de
|
||||
|
||||
|
||||
self.builder = Gtk.Builder()
|
||||
self.builder.add_from_file (os.path.join( os.path.dirname( __file__ ), "system_management.glade" ))
|
||||
self.builder.set_translation_domain("mintmenu")
|
||||
self.builder.add_from_file("/usr/share/linuxmint/mintmenu/system.ui")
|
||||
|
||||
self.systemBtnHolder = self.builder.get_object( "system_button_holder" )
|
||||
self.editableBtnHolder = self.builder.get_object( "editable_button_holder" )
|
||||
self.scrolledWindow = self.builder.get_object( "scrolledwindow2" )
|
||||
self.systemBtnHolder = self.builder.get_object("system_button_holder")
|
||||
self.editableBtnHolder = self.builder.get_object("editable_button_holder")
|
||||
self.scrolledWindow = self.builder.get_object("scrolledwindow2")
|
||||
|
||||
# These properties are NECESSARY to maintain consistency
|
||||
|
||||
# Set 'window' property for the plugin (Must be the root widget)
|
||||
self.window = self.builder.get_object( "mainWindow" )
|
||||
self.window = self.builder.get_object("mainWindow")
|
||||
|
||||
# Set 'heading' property for plugin
|
||||
self.heading = _("System")
|
||||
|
||||
# This should be the first item added to the window in glade
|
||||
self.content_holder = self.builder.get_object( "System" )
|
||||
|
||||
# Items to get custom colors
|
||||
self.itemstocolor = [ self.builder.get_object( "viewport2" ) ]
|
||||
self.content_holder = self.builder.get_object("System")
|
||||
|
||||
# Gconf stuff
|
||||
self.settings = EasyGSettings( "com.linuxmint.mintmenu.plugins.system_management" )
|
||||
self.settings = Gio.Settings("com.linuxmint.mintmenu.plugins.system_management")
|
||||
|
||||
self.settings.notifyAdd( "icon-size", self.RegenPlugin )
|
||||
self.settings.notifyAdd( "show-control-center", self.RegenPlugin )
|
||||
self.settings.notifyAdd( "show-lock-screen", self.RegenPlugin )
|
||||
self.settings.notifyAdd( "show-logout", self.RegenPlugin )
|
||||
self.settings.notifyAdd( "show-package-manager", self.RegenPlugin )
|
||||
self.settings.notifyAdd( "show-software-manager", self.RegenPlugin )
|
||||
self.settings.notifyAdd( "show-terminal", self.RegenPlugin )
|
||||
self.settings.notifyAdd( "show-quit", self.RegenPlugin )
|
||||
self.settings.notifyAdd( "allow-scrollbar", self.RegenPlugin )
|
||||
self.settings.notifyAdd( "height", self.changePluginSize )
|
||||
self.settings.notifyAdd( "width", self.changePluginSize )
|
||||
self.settings.bindGSettingsEntryToVar( "bool", "sticky", self, "sticky" )
|
||||
self.settings.connect("changed::icon-size", self.RegenPlugin)
|
||||
self.settings.connect("changed::show-control-center", self.RegenPlugin)
|
||||
self.settings.connect("changed::show-lock-screen", self.RegenPlugin)
|
||||
self.settings.connect("changed::show-logout", self.RegenPlugin)
|
||||
self.settings.connect("changed::show-package-manager", self.RegenPlugin)
|
||||
self.settings.connect("changed::show-software-manager", self.RegenPlugin)
|
||||
self.settings.connect("changed::show-terminal", self.RegenPlugin)
|
||||
self.settings.connect("changed::show-quit", self.RegenPlugin)
|
||||
self.settings.connect("changed::allow-scrollbar", self.RegenPlugin)
|
||||
self.settings.connect("changed::height", self.changePluginSize)
|
||||
self.settings.connect("changed::width", self.changePluginSize)
|
||||
|
||||
self.GetGSettingsEntries()
|
||||
|
||||
self.content_holder.set_size_request( self.width, self.height )
|
||||
self.content_holder.set_size_request(self.width, self.height)
|
||||
|
||||
def destroy( self ):
|
||||
self.settings.notifyRemoveAll()
|
||||
|
||||
def wake (self) :
|
||||
def wake(self):
|
||||
pass
|
||||
|
||||
def changePluginSize( self, settings, key, args ):
|
||||
self.allowScrollbar = self.settings.get( "bool", "allow-scrollbar")
|
||||
def changePluginSize(self, settings, key):
|
||||
self.allowScrollbar = self.settings.get_boolean("allow-scrollbar")
|
||||
if key == "width":
|
||||
self.width = settings.get_int(key)
|
||||
elif key == "height":
|
||||
if (self.allowScrollbar == False):
|
||||
if not self.allowScrollbar:
|
||||
self.height = -1
|
||||
self.scrolledWindow.set_policy( Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.NEVER )
|
||||
self.scrolledWindow.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.NEVER)
|
||||
else:
|
||||
self.scrolledWindow.set_policy( Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC )
|
||||
self.scrolledWindow.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
|
||||
self.height = settings.get_int(key)
|
||||
|
||||
self.content_holder.set_size_request( self.width, self.height )
|
||||
self.content_holder.set_size_request(self.width, self.height)
|
||||
|
||||
|
||||
def RegenPlugin( self, *args, **kargs ):
|
||||
def RegenPlugin(self, *args, **kargs):
|
||||
self.GetGSettingsEntries()
|
||||
self.ClearAll()
|
||||
self.do_standard_items()
|
||||
|
||||
def GetGSettingsEntries( self ):
|
||||
def GetGSettingsEntries(self):
|
||||
|
||||
self.width = self.settings.get( "int", "width")
|
||||
self.allowScrollbar = self.settings.get( "bool", "allow-scrollbar")
|
||||
self.scrolledWindow.set_policy( Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC )
|
||||
self.height = self.settings.get( "int", "height")
|
||||
self.content_holder.set_size_request( self.width, self.height )
|
||||
if (self.allowScrollbar == False):
|
||||
self.width = self.settings.get_int("width")
|
||||
self.allowScrollbar = self.settings.get_boolean("allow-scrollbar")
|
||||
self.scrolledWindow.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
|
||||
self.height = self.settings.get_int("height")
|
||||
self.content_holder.set_size_request(self.width, self.height)
|
||||
if not self.allowScrollbar:
|
||||
self.height = -1
|
||||
self.scrolledWindow.set_policy( Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.NEVER )
|
||||
self.content_holder.set_size_request( self.width, self.height )
|
||||
self.iconsize = self.settings.get( "int","icon-size")
|
||||
self.scrolledWindow.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.NEVER)
|
||||
self.content_holder.set_size_request(self.width, self.height)
|
||||
self.iconsize = self.settings.get_int("icon-size")
|
||||
|
||||
# Check toggles
|
||||
self.showSoftwareManager = self.settings.get( "bool", "show-software-manager")
|
||||
self.showPackageManager = self.settings.get( "bool", "show-package-manager")
|
||||
self.showControlCenter = self.settings.get( "bool", "show-control-center")
|
||||
self.showTerminal = self.settings.get( "bool", "show-terminal")
|
||||
self.showLockScreen = self.settings.get( "bool", "show-lock-screen")
|
||||
self.showLogout = self.settings.get( "bool", "show-logout")
|
||||
self.showQuit = self.settings.get( "bool", "show-quit")
|
||||
self.showSoftwareManager = self.settings.get_boolean("show-software-manager")
|
||||
self.showPackageManager = self.settings.get_boolean("show-package-manager")
|
||||
self.showControlCenter = self.settings.get_boolean("show-control-center")
|
||||
self.showTerminal = self.settings.get_boolean("show-terminal")
|
||||
self.showLockScreen = self.settings.get_boolean("show-lock-screen")
|
||||
self.showLogout = self.settings.get_boolean("show-logout")
|
||||
self.showQuit = self.settings.get_boolean("show-quit")
|
||||
|
||||
if self.de == "cinnamon":
|
||||
self.lock_cmd = "cinnamon-screensaver-command --lock"
|
||||
@ -135,12 +129,9 @@ class pluginclass( object ):
|
||||
self.settings_cmd = "mate-control-center"
|
||||
|
||||
# Hide vertical dotted separator
|
||||
self.hideseparator = self.settings.get( "bool", "hide-separator")
|
||||
self.hideseparator = self.settings.get_boolean("hide-separator")
|
||||
# Plugin icon
|
||||
self.icon = self.settings.get( "string", "icon" )
|
||||
# Allow plugin to be minimized to the left plugin pane
|
||||
self.sticky = self.settings.get( "bool", "sticky")
|
||||
self.minimized = self.settings.get( "bool", "minimized")
|
||||
self.icon = self.settings.get_string("icon")
|
||||
|
||||
def ClearAll(self):
|
||||
for child in self.systemBtnHolder.get_children():
|
||||
@ -149,65 +140,65 @@ class pluginclass( object ):
|
||||
child.destroy()
|
||||
|
||||
#Add standard items
|
||||
def do_standard_items( self ):
|
||||
def do_standard_items(self):
|
||||
|
||||
if ( self.showSoftwareManager == True ):
|
||||
if self.showSoftwareManager:
|
||||
if os.path.exists("/usr/bin/mintinstall"):
|
||||
Button1 = easyButton( "mintinstall", self.iconsize, [_("Software Manager")], -1, -1 )
|
||||
Button1.connect( "clicked", self.ButtonClicked, "gksu mintinstall" )
|
||||
Button1 = easyButton("mintinstall", self.iconsize, [_("Software Manager")], -1, -1)
|
||||
Button1.connect("clicked", self.ButtonClicked, "mintinstall")
|
||||
Button1.show()
|
||||
self.systemBtnHolder.pack_start( Button1, False, False, 0)
|
||||
self.mintMenuWin.setTooltip( Button1, _("Browse and install available software") )
|
||||
self.systemBtnHolder.pack_start(Button1, False, False, 0)
|
||||
self.mintMenuWin.setTooltip(Button1, _("Browse and install available software"))
|
||||
|
||||
if ( self.showPackageManager == True ):
|
||||
Button2 = easyButton( "applications-system", self.iconsize, [_("Package Manager")], -1, -1 )
|
||||
Button2.connect( "clicked", self.ButtonClicked, "synaptic-pkexec" )
|
||||
if self.showPackageManager:
|
||||
Button2 = easyButton("applications-system", self.iconsize, [_("Package Manager")], -1, -1)
|
||||
Button2.connect("clicked", self.ButtonClicked, "synaptic-pkexec")
|
||||
Button2.show()
|
||||
self.systemBtnHolder.pack_start( Button2, False, False, 0 )
|
||||
self.mintMenuWin.setTooltip( Button2, _("Install, remove and upgrade software packages") )
|
||||
self.systemBtnHolder.pack_start(Button2, False, False, 0)
|
||||
self.mintMenuWin.setTooltip(Button2, _("Install, remove and upgrade software packages"))
|
||||
|
||||
if ( self.showControlCenter == True ):
|
||||
Button3 = easyButton( "gtk-preferences", self.iconsize, [_("Control Center")], -1, -1 )
|
||||
Button3.connect( "clicked", self.ButtonClicked, self.settings_cmd )
|
||||
if self.showControlCenter:
|
||||
Button3 = easyButton("gtk-preferences", self.iconsize, [_("Control Center")], -1, -1)
|
||||
Button3.connect("clicked", self.ButtonClicked, self.settings_cmd)
|
||||
Button3.show()
|
||||
self.systemBtnHolder.pack_start( Button3, False, False, 0 )
|
||||
self.mintMenuWin.setTooltip( Button3, _("Configure your system") )
|
||||
self.systemBtnHolder.pack_start(Button3, False, False, 0)
|
||||
self.mintMenuWin.setTooltip(Button3, _("Configure your system"))
|
||||
|
||||
if ( self.showTerminal == True ):
|
||||
Button4 = easyButton( "terminal", self.iconsize, [_("Terminal")], -1, -1 )
|
||||
if self.showTerminal:
|
||||
Button4 = easyButton("terminal", self.iconsize, [_("Terminal")], -1, -1)
|
||||
if os.path.exists(self.terminal_cmd):
|
||||
Button4.connect( "clicked", self.ButtonClicked, self.terminal_cmd )
|
||||
Button4.connect("clicked", self.ButtonClicked, self.terminal_cmd)
|
||||
else:
|
||||
Button4.connect( "clicked", self.ButtonClicked, "x-terminal-emulator" )
|
||||
Button4.connect("clicked", self.ButtonClicked, "x-terminal-emulator")
|
||||
Button4.show()
|
||||
self.systemBtnHolder.pack_start( Button4, False, False, 0 )
|
||||
self.mintMenuWin.setTooltip( Button4, _("Use the command line") )
|
||||
|
||||
if ( self.showLockScreen == True ):
|
||||
Button5 = easyButton( "system-lock-screen", self.iconsize, [_("Lock Screen")], -1, -1 )
|
||||
Button5.connect( "clicked", self.ButtonClicked, self.lock_cmd )
|
||||
self.systemBtnHolder.pack_start(Button4, False, False, 0)
|
||||
self.mintMenuWin.setTooltip(Button4, _("Use the command line"))
|
||||
|
||||
if self.showLockScreen:
|
||||
Button5 = easyButton("system-lock-screen", self.iconsize, [_("Lock Screen")], -1, -1)
|
||||
Button5.connect("clicked", self.ButtonClicked, self.lock_cmd)
|
||||
Button5.show()
|
||||
self.systemBtnHolder.pack_start( Button5, False, False, 0 )
|
||||
self.mintMenuWin.setTooltip( Button5, _("Requires password to unlock") )
|
||||
self.systemBtnHolder.pack_start(Button5, False, False, 0)
|
||||
self.mintMenuWin.setTooltip(Button5, _("Requires password to unlock"))
|
||||
|
||||
if ( self.showLogout == True ):
|
||||
Button6 = easyButton( "system-log-out", self.iconsize, [_("Logout")], -1, -1 )
|
||||
Button6.connect( "clicked", self.ButtonClicked, self.logout_cmd )
|
||||
if self.showLogout:
|
||||
Button6 = easyButton("system-log-out", self.iconsize, [_("Logout")], -1, -1)
|
||||
Button6.connect("clicked", self.ButtonClicked, self.logout_cmd)
|
||||
Button6.show()
|
||||
self.systemBtnHolder.pack_start( Button6, False, False, 0 )
|
||||
self.mintMenuWin.setTooltip( Button6, _("Log out or switch user") )
|
||||
self.systemBtnHolder.pack_start(Button6, False, False, 0)
|
||||
self.mintMenuWin.setTooltip(Button6, _("Log out or switch user"))
|
||||
|
||||
if ( self.showQuit == True ):
|
||||
Button7 = easyButton( "system-shutdown", self.iconsize, [_("Quit")], -1, -1 )
|
||||
Button7.connect( "clicked", self.ButtonClicked, self.shutdown_cmd )
|
||||
if self.showQuit:
|
||||
Button7 = easyButton("system-shutdown", self.iconsize, [_("Quit")], -1, -1)
|
||||
Button7.connect("clicked", self.ButtonClicked, self.shutdown_cmd)
|
||||
Button7.show()
|
||||
self.systemBtnHolder.pack_start( Button7, False, False, 0 )
|
||||
self.mintMenuWin.setTooltip( Button7, _("Shutdown, restart, suspend or hibernate") )
|
||||
self.systemBtnHolder.pack_start(Button7, False, False, 0)
|
||||
self.mintMenuWin.setTooltip(Button7, _("Shutdown, restart, suspend or hibernate"))
|
||||
|
||||
def ButtonClicked( self, widget, Exec ):
|
||||
def ButtonClicked(self, widget, Exec):
|
||||
self.mintMenuWin.hide()
|
||||
if Exec:
|
||||
Execute( Exec )
|
||||
Execute(Exec)
|
||||
|
||||
def do_plugin( self ):
|
||||
def do_plugin(self):
|
||||
self.do_standard_items()
|
||||
|
@ -1,12 +1,14 @@
|
||||
#!/usr/bin/python2
|
||||
#!/usr/bin/python
|
||||
|
||||
import threading
|
||||
|
||||
import gi
|
||||
gi.require_version("Gtk", "3.0")
|
||||
|
||||
from Xlib.display import Display
|
||||
from Xlib import X, error
|
||||
from gi.repository import Gtk, Gdk, GObject, GLib
|
||||
import threading
|
||||
|
||||
from Xlib import X
|
||||
from Xlib.display import Display
|
||||
|
||||
|
||||
class PointerMonitor(GObject.GObject, threading.Thread):
|
||||
__gsignals__ = {
|
||||
@ -48,14 +50,14 @@ class PointerMonitor(GObject.GObject, threading.Thread):
|
||||
if event.type == X.ButtonPress:
|
||||
# Check if pointer is inside monitored windows
|
||||
for w in self.windows:
|
||||
if Gtk.check_version (3, 20, 0) is None:
|
||||
if (Gtk.MAJOR_VERSION, Gtk.MINOR_VERSION) >= (3, 20):
|
||||
pdevice = Gdk.Display.get_default().get_default_seat().get_pointer()
|
||||
else:
|
||||
pdevice = Gdk.Display.get_default().get_device_manager().get_client_pointer()
|
||||
p = self.get_window().get_device_position(pdevice)
|
||||
g = self.get_size()
|
||||
|
||||
if p.x >= 0 and p.y >= 0 and p.x <= g.width and p.y <= g.height:
|
||||
if p.x >= 0 and p.y >= 0 and p.x <= g.width and p.y <= g.height:
|
||||
break
|
||||
else:
|
||||
# Is outside, so activate
|
||||
@ -64,10 +66,9 @@ 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
|
||||
self.root.ungrab_button(X.AnyButton, X.AnyModifier)
|
||||
self.display.close()
|
||||
|
||||
|
3
usr/lib/linuxmint/mintMenu/popup-without-edit.xml
Normal file
3
usr/lib/linuxmint/mintMenu/popup-without-edit.xml
Normal file
@ -0,0 +1,3 @@
|
||||
<menuitem name="Prefs" action="MintMenuPrefs"/>
|
||||
<menuitem name="Reload" action="MintMenuReload"/>
|
||||
<menuitem name="About" action="MintMenuAbout"/>
|
300
usr/lib/linuxmint/mintMenu/preferences.py
Executable file
300
usr/lib/linuxmint/mintMenu/preferences.py
Executable file
@ -0,0 +1,300 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import gettext
|
||||
import glob
|
||||
import locale
|
||||
import setproctitle
|
||||
|
||||
import gi
|
||||
gi.require_version("Gtk", "3.0")
|
||||
gi.require_version('XApp', '1.0')
|
||||
from gi.repository import Gtk, Gdk, GdkPixbuf, XApp
|
||||
|
||||
import keybinding
|
||||
from xapp.GSettingsWidgets import *
|
||||
|
||||
# i18n
|
||||
gettext.install("mintmenu", "/usr/share/linuxmint/locale")
|
||||
locale.bindtextdomain("mintmenu", "/usr/share/linuxmint/locale")
|
||||
locale.textdomain("mintmenu")
|
||||
|
||||
class CustomPlaceDialog (Gtk.Dialog):
|
||||
|
||||
def __init__(self):
|
||||
Gtk.Dialog.__init__(self, title=_("Custom Place"), flags=Gtk.DialogFlags.MODAL,
|
||||
buttons=(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
|
||||
Gtk.STOCK_OK, Gtk.ResponseType.OK))
|
||||
self.set_default_size(150, 100)
|
||||
|
||||
grid = Gtk.Grid()
|
||||
grid.set_row_spacing(12)
|
||||
grid.set_column_spacing(12)
|
||||
grid.set_border_width(12)
|
||||
|
||||
self.name = Gtk.Entry()
|
||||
grid.attach(Gtk.Label(_("Name:")), 0, 0, 1, 1)
|
||||
grid.attach(self.name, 1, 0, 1, 1)
|
||||
|
||||
self.filechooser_button = Gtk.FileChooserButton()
|
||||
self.filechooser_button.set_title(_("Select a folder"))
|
||||
self.filechooser_button.set_action(Gtk.FileChooserAction.SELECT_FOLDER)
|
||||
grid.attach(Gtk.Label(_("Folder:")), 0, 1, 1, 1)
|
||||
grid.attach(self.filechooser_button, 1, 1, 1, 1)
|
||||
|
||||
self.get_content_area().add(grid)
|
||||
|
||||
self.show_all()
|
||||
|
||||
class mintMenuPreferences():
|
||||
|
||||
def __init__(self):
|
||||
|
||||
self.settings = Gio.Settings(schema_id="com.linuxmint.mintmenu")
|
||||
self.places_settings = Gio.Settings(schema_id="com.linuxmint.mintmenu.plugins.places")
|
||||
|
||||
self.builder = Gtk.Builder()
|
||||
self.builder.set_translation_domain("mintmenu")
|
||||
self.builder.add_from_file("/usr/share/linuxmint/mintmenu/preferences.ui")
|
||||
|
||||
self.window = self.builder.get_object("main_window")
|
||||
self.window.set_title(_("Menu preferences"))
|
||||
self.window.set_icon_name("linuxmint-logo")
|
||||
self.window.connect("destroy", Gtk.main_quit)
|
||||
|
||||
page = SettingsPage()
|
||||
self.builder.get_object("box_general").add(page)
|
||||
|
||||
section = page.add_section(_("Menu button"), _("Applet button in the panel"))
|
||||
section.add_row(GSettingsSwitch(_("Show button icon"), "com.linuxmint.mintmenu", "show-applet-icon"))
|
||||
section.add_reveal_row(GSettingsEntry(_("Button text"), "com.linuxmint.mintmenu", "applet-text"), "com.linuxmint.mintmenu", "show-applet-icon")
|
||||
logos = {}
|
||||
logos['name']= _("Menu icons")
|
||||
logos['icons']= self.settings.get_strv("applet-icons")
|
||||
icon_chooser = GSettingsIconChooser(_("Button icon"), "com.linuxmint.mintmenu", "applet-icon", default_icon=self.settings.get_string("default-applet-icon"), icon_categories=[logos])
|
||||
icon_chooser.content_widget.set_default_category(_("Menu icons"))
|
||||
section.add_reveal_row(icon_chooser, "com.linuxmint.mintmenu", "show-applet-icon")
|
||||
|
||||
binding_widget = keybinding.KeybindingWidget()
|
||||
binding_widget.set_val(self.settings.get_string("hot-key"))
|
||||
binding_widget.connect("accel-edited", self.set_keyboard_shortcut)
|
||||
label = SettingsLabel(_("Keyboard shortcut"))
|
||||
setting_widget = SettingsWidget()
|
||||
setting_widget.pack_start(label, False, False, 0)
|
||||
setting_widget.pack_end(binding_widget, False, False, 0)
|
||||
section.add_row(setting_widget)
|
||||
|
||||
section = page.add_section(_("Options"), _("General applet options"))
|
||||
self.system_switch = Switch(_("Show system management"))
|
||||
self.system_switch.content_widget.connect("notify::active", self.set_plugins)
|
||||
section.add_row(self.system_switch)
|
||||
self.places_switch = Switch(_("Show places"))
|
||||
self.places_switch.content_widget.connect("notify::active", self.set_plugins)
|
||||
section.add_row(self.places_switch)
|
||||
self.recent_switch = Switch(_("Show recently used documents and applications"))
|
||||
self.recent_switch.content_widget.connect("notify::active", self.set_plugins)
|
||||
section.add_row(self.recent_switch)
|
||||
self.set_plugins_switches()
|
||||
section.add_row(GSettingsSwitch(_("Show tooltips"), "com.linuxmint.mintmenu", "tooltips-enabled"))
|
||||
|
||||
page = SettingsPage()
|
||||
self.builder.get_object("box_appearance").add(page)
|
||||
section = page.add_section(_("Theme"), _("Custom theme selection"))
|
||||
options = []
|
||||
options.append(["default", _("Desktop theme"), "default"])
|
||||
themes = glob.glob("/usr/share/themes/*/*/gtkrc")
|
||||
for theme in sorted(themes):
|
||||
if theme.startswith("/usr/share/themes") and theme.endswith("/gtk-2.0/gtkrc"):
|
||||
theme = theme.replace("/usr/share/themes/", "")
|
||||
theme = theme.replace("gtk-2.0", "")
|
||||
theme = theme.replace("gtkrc", "")
|
||||
theme = theme.replace("/", "")
|
||||
theme = theme.strip()
|
||||
options.append([theme, theme])
|
||||
section.add_row(GSettingsComboBox(_("Theme:"), "com.linuxmint.mintmenu", "theme-name", options))
|
||||
|
||||
section = page.add_section(_("Icon sizes"), _("The size of the icons"))
|
||||
section.add_row(GSettingsSpinButton(_("Favorites"), "com.linuxmint.mintmenu.plugins.applications", "favicon-size", mini=1, maxi=128, step=1, page=2))
|
||||
section.add_row(GSettingsSpinButton(_("Applications"), "com.linuxmint.mintmenu.plugins.applications", "icon-size", mini=1, maxi=128, step=1, page=2))
|
||||
section.add_row(GSettingsSpinButton(_("System"), "com.linuxmint.mintmenu.plugins.system_management", "icon-size", mini=1, maxi=128, step=1, page=2))
|
||||
section.add_row(GSettingsSpinButton(_("Places"), "com.linuxmint.mintmenu.plugins.places", "icon-size", mini=1, maxi=128, step=1, page=2))
|
||||
|
||||
page = SettingsPage()
|
||||
self.builder.get_object("box_applications").add(page)
|
||||
|
||||
section = page.add_section(_("Layout"), _("Section layout"))
|
||||
section.add_row(GSettingsSwitch(_("Show search bar on top"), "com.linuxmint.mintmenu.plugins.applications", "search-on-top"))
|
||||
section.add_row(GSettingsSwitch(_("Show applications comments"), "com.linuxmint.mintmenu.plugins.applications", "show-application-comments"))
|
||||
|
||||
section = page.add_section(_("Categories"), _("Applications categories"))
|
||||
section.add_row(GSettingsSwitch(_("Show category icons"), "com.linuxmint.mintmenu.plugins.applications", "show-category-icons"))
|
||||
section.add_row(GSettingsSwitch(_("Switch categories on hover"), "com.linuxmint.mintmenu.plugins.applications", "categories-mouse-over"))
|
||||
section.add_reveal_row(GSettingsSpinButton(_("Hover delay"), "com.linuxmint.mintmenu.plugins.applications", "category-hover-delay", units=_("milliseconds"), mini=1, maxi=500, step=1, page=10), "com.linuxmint.mintmenu.plugins.applications", "categories-mouse-over")
|
||||
|
||||
section = page.add_section(_("Search"), _("Search options"))
|
||||
section.add_row(GSettingsSwitch(_("Search for packages to install"), "com.linuxmint.mintmenu.plugins.applications", "use-apt"))
|
||||
section.add_row(GSettingsSwitch(_("Remember the last category or search"), "com.linuxmint.mintmenu.plugins.applications", "remember-filter"))
|
||||
section.add_row(GSettingsSwitch(_("Enable Internet search"), "com.linuxmint.mintmenu.plugins.applications", "enable-internet-search"))
|
||||
section.add_row(GSettingsEntry(_("Search command"), "com.linuxmint.mintmenu.plugins.applications", "search-command"))
|
||||
|
||||
page = SettingsPage()
|
||||
self.builder.get_object("box_favorites").add(page)
|
||||
|
||||
section = page.add_section(_("Layout"), _("Section layout"))
|
||||
section.add_row(GSettingsSpinButton(_("Number of columns"), "com.linuxmint.mintmenu.plugins.applications", "fav-cols", mini=1, maxi=5, step=1, page=1))
|
||||
section.add_row(GSettingsSwitch(_("Swap name and generic name"), "com.linuxmint.mintmenu.plugins.applications", "swap-generic-name"))
|
||||
section.add_row(GSettingsSwitch(_("Show favorites when the menu is open"), "com.linuxmint.mintmenu", "start-with-favorites"))
|
||||
|
||||
page = SettingsPage()
|
||||
self.builder.get_object("box_system").add(page)
|
||||
|
||||
section = page.add_section(_("Layout"), _("Section layout"))
|
||||
section.add_row(GSettingsSwitch(_("Custom height"), "com.linuxmint.mintmenu.plugins.system_management", "allow-scrollbar"))
|
||||
section.add_reveal_row(GSettingsSpinButton(_("Height"), "com.linuxmint.mintmenu.plugins.system_management", "height", mini=1, maxi=800, step=1, page=2), "com.linuxmint.mintmenu.plugins.system_management", "allow-scrollbar")
|
||||
|
||||
section = page.add_section(_("Items"), _("Toggle default items"))
|
||||
section.add_row(GSettingsSwitch(_("Software Manager"), "com.linuxmint.mintmenu.plugins.system_management", "show-software-manager"))
|
||||
section.add_row(GSettingsSwitch(_("Package Manager"), "com.linuxmint.mintmenu.plugins.system_management", "show-package-manager"))
|
||||
section.add_row(GSettingsSwitch(_("Control Center"), "com.linuxmint.mintmenu.plugins.system_management", "show-control-center"))
|
||||
section.add_row(GSettingsSwitch(_("Terminal"), "com.linuxmint.mintmenu.plugins.system_management", "show-terminal"))
|
||||
section.add_row(GSettingsSwitch(_("Lock Screen"), "com.linuxmint.mintmenu.plugins.system_management", "show-lock-screen"))
|
||||
section.add_row(GSettingsSwitch(_("Logout"), "com.linuxmint.mintmenu.plugins.system_management", "show-logout"))
|
||||
section.add_row(GSettingsSwitch(_("Quit"), "com.linuxmint.mintmenu.plugins.system_management", "show-quit"))
|
||||
|
||||
page = SettingsPage()
|
||||
self.builder.get_object("box_places").add(page)
|
||||
|
||||
section = page.add_section(_("Layout"), _("Section layout"))
|
||||
section.add_row(GSettingsSwitch(_("Custom height"), "com.linuxmint.mintmenu.plugins.places", "allow-scrollbar"))
|
||||
section.add_reveal_row(GSettingsSpinButton(_("Height"), "com.linuxmint.mintmenu.plugins.places", "height", mini=1, maxi=800, step=1, page=2), "com.linuxmint.mintmenu.plugins.places", "allow-scrollbar")
|
||||
|
||||
section = page.add_section(_("Items"), _("Toggle default items"))
|
||||
section.add_row(GSettingsSwitch(_("Computer"), "com.linuxmint.mintmenu.plugins.places", "show-computer"))
|
||||
section.add_row(GSettingsSwitch(_("Home Folder"), "com.linuxmint.mintmenu.plugins.places", "show-home-folder"))
|
||||
section.add_row(GSettingsSwitch(_("Network"), "com.linuxmint.mintmenu.plugins.places", "show-network"))
|
||||
section.add_row(GSettingsSwitch(_("Desktop"), "com.linuxmint.mintmenu.plugins.places", "show-desktop"))
|
||||
section.add_row(GSettingsSwitch(_("Trash"), "com.linuxmint.mintmenu.plugins.places", "show-trash"))
|
||||
section.add_row(GSettingsSwitch(_("GTK Bookmarks"), "com.linuxmint.mintmenu.plugins.places", "show-gtk-bookmarks"))
|
||||
|
||||
section = page.add_section(_("Custom places"), _("You can add your own places in the menu"))
|
||||
box = self.builder.get_object("custom_places_box")
|
||||
section.add(box)
|
||||
self.custom_places_tree = self.builder.get_object("custom_places_tree")
|
||||
self.custom_places_paths = self.places_settings.get_strv("custom-paths")
|
||||
self.custom_places_names = self.places_settings.get_strv("custom-names")
|
||||
self.custom_places_model = Gtk.ListStore(str, str)
|
||||
self.cell = Gtk.CellRendererText()
|
||||
for count in range(len(self.custom_places_paths)):
|
||||
self.custom_places_model.append([self.custom_places_names[count], self.custom_places_paths[count]])
|
||||
self.custom_places_model.connect("row-inserted", self.save_custom_places)
|
||||
self.custom_places_model.connect("row-deleted", self.save_custom_places)
|
||||
self.custom_places_model.connect("rows-reordered", self.save_custom_places)
|
||||
self.custom_places_model.connect("row-changed", self.save_custom_places)
|
||||
self.custom_places_tree.set_model(self.custom_places_model)
|
||||
self.custom_places_tree.append_column(Gtk.TreeViewColumn(_("Name"), self.cell, text=0))
|
||||
self.custom_places_tree.append_column(Gtk.TreeViewColumn(_("Path"), self.cell, text=1))
|
||||
self.builder.get_object("newButton").connect("clicked", self.add_custom_place)
|
||||
self.builder.get_object("editButton").connect("clicked", self.edit_custom_place)
|
||||
self.builder.get_object("upButton").connect("clicked", self.move_up)
|
||||
self.builder.get_object("downButton").connect("clicked", self.move_down)
|
||||
self.builder.get_object("removeButton").connect("clicked", self.remove_custom_place)
|
||||
|
||||
self.window.show_all()
|
||||
return
|
||||
|
||||
def set_keyboard_shortcut(self, widget):
|
||||
self.settings.set_string("hot-key", widget.get_val())
|
||||
|
||||
def set_plugins_switches(self):
|
||||
plugins = self.settings.get_strv("plugins-list")
|
||||
self.recent_switch.content_widget.set_active("recent" in plugins)
|
||||
self.system_switch.content_widget.set_active("system_management" in plugins)
|
||||
self.places_switch.content_widget.set_active("places" in plugins)
|
||||
|
||||
def set_plugins(self, widget, param):
|
||||
visible_plugins = []
|
||||
if self.places_switch.content_widget.get_active():
|
||||
visible_plugins.append("places")
|
||||
if self.system_switch.content_widget.get_active():
|
||||
visible_plugins.append("system_management")
|
||||
if self.places_switch.content_widget.get_active() or self.system_switch.content_widget.get_active():
|
||||
visible_plugins.append("newpane")
|
||||
visible_plugins.append("applications")
|
||||
if self.recent_switch.content_widget.get_active():
|
||||
visible_plugins.append("newpane")
|
||||
visible_plugins.append("recent")
|
||||
self.settings.set_strv("plugins-list", visible_plugins)
|
||||
|
||||
def add_custom_place(self, newButton):
|
||||
dialog = CustomPlaceDialog()
|
||||
response = dialog.run()
|
||||
if response == Gtk.ResponseType.OK:
|
||||
name = dialog.name.get_text()
|
||||
path = dialog.filechooser_button.get_filename()
|
||||
if name and path and name != "":
|
||||
self.custom_places_model.append((name, path))
|
||||
dialog.destroy()
|
||||
return
|
||||
|
||||
def edit_custom_place(self, editButton):
|
||||
dialog = CustomPlaceDialog()
|
||||
treeselection = self.custom_places_tree.get_selection()
|
||||
currentiter = treeselection.get_selected()[1]
|
||||
if currentiter:
|
||||
initName = self.custom_places_model.get_value(currentiter, 0)
|
||||
initPath = self.custom_places_model.get_value(currentiter, 1)
|
||||
dialog.name.set_text(initName)
|
||||
dialog.filechooser_button.set_filename(initPath)
|
||||
response = dialog.run()
|
||||
if response == Gtk.ResponseType.OK:
|
||||
name = dialog.name.get_text()
|
||||
path = dialog.filechooser_button.get_filename()
|
||||
if name and path and name != "":
|
||||
self.custom_places_model.set_value(currentiter, 0, name)
|
||||
self.custom_places_model.set_value(currentiter, 1, path)
|
||||
dialog.destroy()
|
||||
|
||||
def move_up(self, upButton):
|
||||
treeselection = self.custom_places_tree.get_selection()
|
||||
currentiter = treeselection.get_selected()[1]
|
||||
if treeselection:
|
||||
lagiter = self.custom_places_model.get_iter_first()
|
||||
nextiter = self.custom_places_model.get_iter_first()
|
||||
while nextiter and self.custom_places_model.get_path(nextiter) != \
|
||||
self.custom_places_model.get_path(currentiter):
|
||||
lagiter = nextiter
|
||||
nextiter = self.custom_places_model.iter_next(nextiter)
|
||||
if nextiter:
|
||||
self.custom_places_model.swap(currentiter, lagiter)
|
||||
return
|
||||
|
||||
def move_down(self, downButton):
|
||||
treeselection = self.custom_places_tree.get_selection()
|
||||
currentiter = treeselection.get_selected()[1]
|
||||
nextiter = self.custom_places_model.iter_next(currentiter)
|
||||
if nextiter:
|
||||
self.custom_places_model.swap(currentiter, nextiter)
|
||||
return
|
||||
|
||||
def remove_custom_place(self, removeButton):
|
||||
treeselection = self.custom_places_tree.get_selection()
|
||||
currentiter = treeselection.get_selected()[1]
|
||||
if currentiter:
|
||||
self.custom_places_model.remove(currentiter)
|
||||
return
|
||||
|
||||
def save_custom_places(self, treemodel, path, iter = None, new_order = None):
|
||||
if not iter or self.custom_places_model.get_value(iter, 1):
|
||||
treeiter = self.custom_places_model.get_iter_first()
|
||||
custom_places_names = []
|
||||
custom_places_paths = []
|
||||
while treeiter:
|
||||
custom_places_names = custom_places_names + [self.custom_places_model.get_value(treeiter, 0)]
|
||||
custom_places_paths = custom_places_paths + [self.custom_places_model.get_value(treeiter, 1)]
|
||||
treeiter = self.custom_places_model.iter_next(treeiter)
|
||||
self.places_settings.set_strv("custom-paths", custom_places_paths)
|
||||
self.places_settings.set_strv("custom-names", custom_places_names)
|
||||
|
||||
if __name__ == "__main__":
|
||||
setproctitle.setproctitle('mintmenu-preferences')
|
||||
preferences = mintMenuPreferences()
|
||||
Gtk.main()
|
Binary file not shown.
Before ![]() (image error) 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 (image error) Size: 3.8 KiB |
Binary file not shown.
Before ![]() (image error) Size: 733 B |
Binary file not shown.
Before (image error) Size: 318 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 (image error) Size: 2.4 KiB |
@ -2,20 +2,14 @@
|
||||
<schemalist>
|
||||
<schema id="com.linuxmint.mintmenu" path="/com/linuxmint/mintmenu/">
|
||||
|
||||
<key type="b" name="hide-applet-icon">
|
||||
<default>false</default>
|
||||
<summary></summary>
|
||||
<description></description>
|
||||
</key>
|
||||
|
||||
<key type="b" name="use-custom-color">
|
||||
<default>false</default>
|
||||
<key type="b" name="show-applet-icon">
|
||||
<default>true</default>
|
||||
<summary></summary>
|
||||
<description></description>
|
||||
</key>
|
||||
|
||||
<key type="b" name="tooltips-enabled">
|
||||
<default>true</default>
|
||||
<default>false</default>
|
||||
<summary></summary>
|
||||
<description></description>
|
||||
</key>
|
||||
@ -39,7 +33,7 @@
|
||||
</key>
|
||||
|
||||
<key type="s" name="applet-text">
|
||||
<default>"Menu"</default>
|
||||
<default>""</default>
|
||||
<summary></summary>
|
||||
<description></description>
|
||||
</key>
|
||||
@ -57,7 +51,25 @@
|
||||
</key>
|
||||
|
||||
<key type="s" name="applet-icon">
|
||||
<default>"/usr/lib/linuxmint/mintMenu/mintMenu.png"</default>
|
||||
<default>"linuxmint-logo-ring-symbolic"</default>
|
||||
<summary></summary>
|
||||
<description></description>
|
||||
</key>
|
||||
|
||||
<key type="s" name="default-applet-icon">
|
||||
<default>"linuxmint-logo-ring-symbolic"</default>
|
||||
<summary></summary>
|
||||
<description></description>
|
||||
</key>
|
||||
|
||||
<key type="as" name="applet-icons">
|
||||
<default>["linuxmint-logo", "linuxmint-logo-badge", "linuxmint-logo-badge-symbolic", "linuxmint-logo-filled-badge",
|
||||
"linuxmint-logo-filled-leaf-badge", "linuxmint-logo-filled-leaf", "linuxmint-logo-filled-ring",
|
||||
"linuxmint-logo-leaf-badge", "linuxmint-logo-leaf-badge-symbolic", "linuxmint-logo-leaf",
|
||||
"linuxmint-logo-leaf-symbolic", "linuxmint-logo-neon", "linuxmint-logo-ring",
|
||||
"linuxmint-logo-ring-symbolic", "linuxmint-logo-simple", "linuxmint-logo-simple-symbolic",
|
||||
"mate-symbolic", "emblem-favorite-symbolic", "user-bookmarks-symbolic",
|
||||
"start-here-symbolic"]</default>
|
||||
<summary></summary>
|
||||
<description></description>
|
||||
</key>
|
||||
@ -68,32 +80,10 @@
|
||||
<description></description>
|
||||
</key>
|
||||
|
||||
<key type="s" name="custom-color">
|
||||
<default>"#DEDEDE"</default>
|
||||
<summary></summary>
|
||||
<description></description>
|
||||
</key>
|
||||
|
||||
<key type="s" name="custom-heading-color">
|
||||
<default>"#3C3C3C"</default>
|
||||
<summary></summary>
|
||||
<description></description>
|
||||
</key>
|
||||
</schema>
|
||||
|
||||
|
||||
<schema id="com.linuxmint.mintmenu.plugins.places" path="/com/linuxmint/mintmenu/plugins/places/">
|
||||
<key type="b" name="sticky">
|
||||
<default>false</default>
|
||||
<summary></summary>
|
||||
<description></description>
|
||||
</key>
|
||||
|
||||
<key type="b" name="minimized">
|
||||
<default>false</default>
|
||||
<summary></summary>
|
||||
<description></description>
|
||||
</key>
|
||||
|
||||
<key type="b" name="allow-scrollbar">
|
||||
<default>false</default>
|
||||
@ -266,18 +256,6 @@
|
||||
<description></description>
|
||||
</key>
|
||||
|
||||
<key type="b" name="sticky">
|
||||
<default>false</default>
|
||||
<summary></summary>
|
||||
<description></description>
|
||||
</key>
|
||||
|
||||
<key type="b" name="minimized">
|
||||
<default>false</default>
|
||||
<summary></summary>
|
||||
<description></description>
|
||||
</key>
|
||||
|
||||
<key type="s" name="search-command">
|
||||
<default>"mate-search-tool --named \"%s\" --start"</default>
|
||||
<summary></summary>
|
||||
@ -307,6 +285,18 @@
|
||||
<summary></summary>
|
||||
<description></description>
|
||||
</key>
|
||||
|
||||
<key type="b" name="search-on-top">
|
||||
<default>false</default>
|
||||
<summary></summary>
|
||||
<description></description>
|
||||
</key>
|
||||
|
||||
<key type="as" name="favorite-apps-list">
|
||||
<default>[]</default>
|
||||
<summary>List of absolute desktop file paths</summary>
|
||||
</key>
|
||||
|
||||
</schema>
|
||||
|
||||
<schema id="com.linuxmint.mintmenu.plugins.system_management" path="/com/linuxmint/mintmenu/plugins/system_management/">
|
||||
@ -383,18 +373,6 @@
|
||||
<description></description>
|
||||
</key>
|
||||
|
||||
<key type="b" name="sticky">
|
||||
<default>false</default>
|
||||
<summary></summary>
|
||||
<description></description>
|
||||
</key>
|
||||
|
||||
<key type="b" name="minimized">
|
||||
<default>false</default>
|
||||
<summary></summary>
|
||||
<description></description>
|
||||
</key>
|
||||
|
||||
<key type="s" name="icon">
|
||||
<default>"preferences-system"</default>
|
||||
<summary></summary>
|
||||
@ -417,7 +395,7 @@
|
||||
</key>
|
||||
|
||||
<key type="i" name="num-recent-docs">
|
||||
<default>10</default>
|
||||
<default>20</default>
|
||||
<summary></summary>
|
||||
<description></description>
|
||||
</key>
|
||||
@ -440,16 +418,9 @@
|
||||
<description></description>
|
||||
</key>
|
||||
|
||||
<key type="b" name="sticky">
|
||||
<default>false</default>
|
||||
<summary></summary>
|
||||
<description></description>
|
||||
</key>
|
||||
|
||||
<key type="b" name="minimized">
|
||||
<default>false</default>
|
||||
<summary></summary>
|
||||
<description></description>
|
||||
<key type="as" name="recent-apps-list">
|
||||
<default>[]</default>
|
||||
<summary>List of absolute desktop file paths</summary>
|
||||
</key>
|
||||
|
||||
</schema>
|
||||
|
@ -0,0 +1,39 @@
|
||||
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='view-grid-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' inkscape:version='0.48.2 r9819' version='1.1' width='16' xmlns='http://www.w3.org/2000/svg'>
|
||||
<metadata id='metadata90'>
|
||||
<rdf:RDF>
|
||||
<cc:Work rdf:about=''>
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
|
||||
<dc:title>Cinnamon All Applications</dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview inkscape:bbox-paths='false' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer12' inkscape:cx='84.99158' inkscape:cy='6.64106' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#555753' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='true' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='false' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1168' inkscape:window-maximized='1' inkscape:window-width='1600' inkscape:window-x='0' inkscape:window-y='0' inkscape:zoom='1'>
|
||||
<inkscape:grid empspacing='2' enabled='true' id='grid4866' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
|
||||
</sodipodi:namedview>
|
||||
<title id='title9167'>Cinnamon All Applications</title>
|
||||
<defs id='defs7386'/>
|
||||
<g inkscape:groupmode='layer' id='layer9' inkscape:label='status' style='display:inline' transform='translate(-61.0004,-867)'/>
|
||||
<g inkscape:groupmode='layer' id='layer10' inkscape:label='devices' transform='translate(-61.0004,-867)'/>
|
||||
<g inkscape:groupmode='layer' id='layer11' inkscape:label='apps' transform='translate(-61.0004,-867)'/>
|
||||
<g inkscape:groupmode='layer' id='layer13' inkscape:label='places' transform='translate(-61.0004,-867)'/>
|
||||
<g inkscape:groupmode='layer' id='layer14' inkscape:label='mimetypes' transform='translate(-61.0004,-867)'/>
|
||||
<g inkscape:groupmode='layer' id='layer15' inkscape:label='emblems' style='display:inline' transform='translate(-61.0004,-867)'/>
|
||||
<g inkscape:groupmode='layer' id='g71291' inkscape:label='emotes' style='display:inline' transform='translate(-61.0004,-867)'/>
|
||||
<g inkscape:groupmode='layer' id='g4953' inkscape:label='categories' style='display:inline' transform='translate(-61.0004,-867)'/>
|
||||
<g inkscape:groupmode='layer' id='layer12' inkscape:label='actions' style='display:inline' transform='translate(-61.0004,-867)'>
|
||||
|
||||
<rect height='2' id='rect13363' rx='0.38461545' ry='0.37878788' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='2.0000002' x='64.000198' y='870'/>
|
||||
<rect height='2' id='rect13365' rx='0.38461545' ry='0.37878788' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='2.0000002' x='68.000198' y='870'/>
|
||||
<rect height='2' id='rect13367' rx='0.38461545' ry='0.37878788' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='2.0000002' x='72.000198' y='870'/>
|
||||
<rect height='2' id='rect13369' rx='0.38461545' ry='0.37878788' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='2.0000002' x='64.000198' y='874.01562'/>
|
||||
<rect height='2' id='rect13371' rx='0.38461545' ry='0.37878788' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='2.0000002' x='68.000198' y='874.01562'/>
|
||||
<rect height='2' id='rect13373' rx='0.38461545' ry='0.37878788' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='2.0000002' x='72.000198' y='874.01562'/>
|
||||
<rect height='2' id='rect13375' rx='0.38461545' ry='0.37878788' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='2.0000002' x='64.000198' y='878'/>
|
||||
<rect height='2' id='rect13377' rx='0.38461545' ry='0.37878788' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='2.0000002' x='68.000198' y='878'/>
|
||||
<rect height='2' id='rect13379' rx='0.38461545' ry='0.37878788' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='2.0000002' x='72.000198' y='878'/>
|
||||
</g>
|
||||
</svg>
|
After (image error) Size: 5.6 KiB |
@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.22.2 -->
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.0"/>
|
||||
<requires lib="gtk+" version="3.18"/>
|
||||
<object class="GtkWindow" id="mainWindow">
|
||||
<property name="width_request">169</property>
|
||||
<property name="height_request">227</property>
|
||||
@ -8,14 +9,18 @@
|
||||
<property name="window_position">mouse</property>
|
||||
<property name="gravity">static</property>
|
||||
<signal name="destroy" handler="on_window1_destroy" swapped="no"/>
|
||||
<child type="titlebar">
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEventBox" id="Applications">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="vbox4">
|
||||
<object class="GtkBox" id="main_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="border_width">3</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkNotebook" id="notebook2">
|
||||
@ -40,11 +45,16 @@
|
||||
<object class="GtkLabel" id="label6">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xpad">15</property>
|
||||
<property name="ypad">10</property>
|
||||
<property name="label" translatable="yes"><span weight="bold">Favorites</span></property>
|
||||
<property name="use_markup">True</property>
|
||||
<property name="margin_left">15</property>
|
||||
<property name="margin_right">15</property>
|
||||
<property name="margin_top">10</property>
|
||||
<property name="margin_bottom">10</property>
|
||||
<property name="label" translatable="yes">Favorites</property>
|
||||
<property name="xalign">0</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
<attribute name="scale" value="1.2"/>
|
||||
</attributes>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
@ -70,7 +80,7 @@
|
||||
<object class="GtkLabel" id="label7">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">All _Applications</property>
|
||||
<property name="label" translatable="yes">All applications</property>
|
||||
<property name="use_underline">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
@ -85,7 +95,7 @@
|
||||
<property name="can_focus">False</property>
|
||||
<property name="margin_left">5</property>
|
||||
<property name="margin_right">5</property>
|
||||
<property name="stock">gtk-go-forward</property>
|
||||
<property name="icon_name">go-next-symbolic</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
@ -112,21 +122,51 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkViewport" id="viewport2">
|
||||
<object class="GtkScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">queue</property>
|
||||
<property name="shadow_type">none</property>
|
||||
<property name="can_focus">True</property>
|
||||
<child>
|
||||
<object class="GtkGrid" id="favoritesBox">
|
||||
<object class="GtkViewport" id="viewport2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="column_homogeneous">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">queue</property>
|
||||
<property name="shadow_type">none</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
<object class="GtkGrid" id="favoritesBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="column_homogeneous">True</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
@ -150,7 +190,7 @@
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">3</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="hbox3">
|
||||
<object class="GtkBox" id="title_bar">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="homogeneous">True</property>
|
||||
@ -158,11 +198,16 @@
|
||||
<object class="GtkLabel" id="label2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xpad">15</property>
|
||||
<property name="ypad">10</property>
|
||||
<property name="label" translatable="yes"><span weight="bold">All Applications</span></property>
|
||||
<property name="use_markup">True</property>
|
||||
<property name="margin_left">15</property>
|
||||
<property name="margin_right">15</property>
|
||||
<property name="margin_top">10</property>
|
||||
<property name="margin_bottom">10</property>
|
||||
<property name="label" translatable="yes">Applications</property>
|
||||
<property name="xalign">0</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
<attribute name="scale" value="1.2"/>
|
||||
</attributes>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
@ -188,7 +233,7 @@
|
||||
<object class="GtkLabel" id="label3">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">_Favorites</property>
|
||||
<property name="label" translatable="yes">Favorites</property>
|
||||
<property name="use_underline">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
@ -203,7 +248,7 @@
|
||||
<property name="can_focus">False</property>
|
||||
<property name="margin_left">5</property>
|
||||
<property name="margin_right">5</property>
|
||||
<property name="stock">gtk-go-forward</property>
|
||||
<property name="icon_name">go-next-symbolic</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
@ -230,11 +275,11 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="hbox5">
|
||||
<object class="GtkBox" id="applications">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="scrolledwindow1">
|
||||
<object class="GtkScrolledWindow" id="categoriesScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">never</property>
|
||||
@ -327,25 +372,10 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="hbox9">
|
||||
<property name="width_request">227</property>
|
||||
<property name="height_request">30</property>
|
||||
<object class="GtkBox" id="search_bar">
|
||||
<property name="height_request">20</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="searchLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes"><span weight="bold">Search:</span></property>
|
||||
<property name="use_markup">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="padding">5</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="searchEntry">
|
||||
<property name="height_request">25</property>
|
||||
@ -374,6 +404,7 @@
|
||||
<property name="can_default">True</property>
|
||||
<property name="has_default">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Show additional search options</property>
|
||||
<property name="relief">none</property>
|
||||
<signal name="clicked" handler="on_button17_clicked" swapped="no"/>
|
||||
<child>
|
||||
@ -382,7 +413,7 @@
|
||||
<property name="can_focus">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="has_default">True</property>
|
||||
<property name="stock">gtk-find</property>
|
||||
<property name="icon_name">edit-find-symbolic</property>
|
||||
<property name="icon_size">1</property>
|
||||
</object>
|
||||
</child>
|
388
usr/share/linuxmint/mintmenu/preferences.ui
Normal file
388
usr/share/linuxmint/mintmenu/preferences.ui
Normal file
@ -0,0 +1,388 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.22.1 -->
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.18"/>
|
||||
<requires lib="xapp" version="0.0"/>
|
||||
<object class="GtkBox" id="custom_places_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="margin_top">9</property>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="scrolledwindow1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="shadow_type">etched-in</property>
|
||||
<child>
|
||||
<object class="GtkTreeView" id="custom_places_tree">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="reorderable">True</property>
|
||||
<child internal-child="selection">
|
||||
<object class="GtkTreeSelection"/>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="vbox3">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkButtonBox" id="vbuttonbox1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="homogeneous">True</property>
|
||||
<property name="layout_style">expand</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="newButton">
|
||||
<property name="label">gtk-new</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="editButton">
|
||||
<property name="label">gtk-edit</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="padding">6</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButtonBox" id="vbuttonbox2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="homogeneous">True</property>
|
||||
<property name="layout_style">expand</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="upButton">
|
||||
<property name="label">gtk-go-up</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="downButton">
|
||||
<property name="label">gtk-go-down</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="padding">5</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButtonBox" id="vbuttonbox3">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="homogeneous">True</property>
|
||||
<property name="layout_style">expand</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="removeButton">
|
||||
<property name="label">gtk-remove</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="padding">5</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="padding">6</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkWindow" id="main_window">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="default_width">750</property>
|
||||
<property name="default_height">750</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="XAppStackSidebar" id="stack_switcher">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="stack">main_stack</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkStack" id="main_stack">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<child>
|
||||
<object class="GtkViewport">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="box_general">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">page1</property>
|
||||
<property name="title" translatable="yes">General</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<child>
|
||||
<object class="GtkViewport">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="box_appearance">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">page0</property>
|
||||
<property name="title" translatable="yes">Appearance</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<child>
|
||||
<object class="GtkViewport">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="box_favorites">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">page3</property>
|
||||
<property name="title" translatable="yes">Favorites</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<child>
|
||||
<object class="GtkViewport">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="box_applications">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">page2</property>
|
||||
<property name="title" translatable="yes">Applications</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<child>
|
||||
<object class="GtkViewport">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="box_system">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">page4</property>
|
||||
<property name="title" translatable="yes">System</property>
|
||||
<property name="position">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<child>
|
||||
<object class="GtkViewport">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="box_places">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">page5</property>
|
||||
<property name="title" translatable="yes">Places</property>
|
||||
<property name="position">5</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkListStore" id="model1">
|
||||
<columns>
|
||||
<!-- column-name gchararray -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
<data>
|
||||
<row>
|
||||
<col id="0" translatable="yes">Default</col>
|
||||
</row>
|
||||
</data>
|
||||
</object>
|
||||
</interface>
|
@ -1,10 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.22.2 -->
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.0"/>
|
||||
<object class="GtkWindow" id="window1">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="border_width">3</property>
|
||||
<property name="title" translatable="yes">window1</property>
|
||||
<child type="titlebar">
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEventBox" id="eventbox1">
|
||||
<property name="visible">True</property>
|
||||
@ -14,27 +18,32 @@
|
||||
<object class="GtkBox" id="vbox1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">3</property>
|
||||
<child>
|
||||
<object class="GtkNotebook" id="RecentTabs">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="show_tabs">False</property>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="scrolledwindow1">
|
||||
<object class="GtkScrolledWindow" id="scrolledwindow2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkViewport" id="viewport2">
|
||||
<object class="GtkViewport" id="viewport1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="margin_left">12</property>
|
||||
<property name="margin_right">12</property>
|
||||
<property name="margin_top">12</property>
|
||||
<property name="margin_bottom">12</property>
|
||||
<property name="shadow_type">none</property>
|
||||
<child>
|
||||
<object class="GtkButtonBox" id="RecentApps">
|
||||
<object class="GtkBox" id="RecentBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="layout_style">start</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
@ -45,30 +54,36 @@
|
||||
</object>
|
||||
</child>
|
||||
<child type="tab">
|
||||
<object class="GtkLabel" id="label2">
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Applications</property>
|
||||
<property name="label" translatable="yes">Documents</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="tab_fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="scrolledwindow2">
|
||||
<object class="GtkScrolledWindow" id="scrolledwindow1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="can_focus">True</property>
|
||||
<child>
|
||||
<object class="GtkViewport" id="viewport1">
|
||||
<object class="GtkViewport" id="viewport2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="margin_left">12</property>
|
||||
<property name="margin_right">12</property>
|
||||
<property name="margin_top">12</property>
|
||||
<property name="margin_bottom">12</property>
|
||||
<property name="shadow_type">none</property>
|
||||
<child>
|
||||
<object class="GtkButtonBox" id="RecentBox">
|
||||
<object class="GtkBox" id="RecentApps">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="layout_style">start</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
@ -79,10 +94,10 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child type="tab">
|
||||
<object class="GtkLabel" id="label3">
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Documents</property>
|
||||
<property name="label" translatable="yes">Applications</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
Loading…
Reference in New Issue
Block a user