[packages/mate-mintmenu] poor man's port to new mate-menus (1.22) api; rel 2

atler atler at pld-linux.org
Wed Mar 20 00:09:45 CET 2019


commit 4771d01abafef546264d31ce0fe223983750fbf3
Author: Jan Palus <atler at pld-linux.org>
Date:   Wed Mar 20 00:08:29 2019 +0100

    poor man's port to new mate-menus (1.22) api; rel 2

 mate-menus-1.22.patch | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++
 mate-mintmenu.spec    |   6 +-
 2 files changed, 160 insertions(+), 2 deletions(-)
---
diff --git a/mate-mintmenu.spec b/mate-mintmenu.spec
index d1a2f25..b8e6e0a 100644
--- a/mate-mintmenu.spec
+++ b/mate-mintmenu.spec
@@ -2,13 +2,14 @@ Summary:	Advanced MATE menu
 Summary(pl.UTF-8):	Zaawansowane menu dla MATE
 Name:		mate-mintmenu
 Version:	5.9.1
-Release:	1
+Release:	2
 License:	GPL v2
 Group:		X11/Applications
 Source0:	http://packages.linuxmint.com/pool/main/m/mintmenu/mintmenu_%{version}.tar.xz
 # Source0-md5:	514377f50ec415bb4d1d6db9672ba070
 Patch0:		%{name}-icon.patch
 Patch1:		%{name}-disable-apt.patch
+Patch2:		mate-menus-1.22.patch
 URL:		https://github.com/linuxmint/mintmenu
 BuildRequires:	sed >= 4.0
 BuildRequires:	tar >= 1:1.22
@@ -17,11 +18,11 @@ Requires(post,postun):	glib2 >= 1:2.26
 Requires:	gtk+3
 Requires:	gvfs
 Requires:	mate-desktop-libs >= 1.18.0
+Requires:	mate-menus-libs >= 1.22.0
 Requires:	mate-panel >= 1.18.0
 Requires:	mozo
 Requires:	python-Xlib
 Requires:	python-configobj
-Requires:	python-matemenu
 Requires:	python-modules
 Requires:	python-pygobject3
 Requires:	python-pyxdg
@@ -41,6 +42,7 @@ Zaawansowane menu dla MATE.
 %setup -qc
 %patch0 -p1
 %patch1 -p1
+%patch2 -p1
 mv mintmenu/* .
 
 %{__sed} -i 's,version = commands.getoutput("/usr/lib/linuxmint/common/version.py mintmenu"),version = "%{version}",' usr/lib/linuxmint/mintMenu/mintMenu.py
diff --git a/mate-menus-1.22.patch b/mate-menus-1.22.patch
new file mode 100644
index 0000000..1bf50e6
--- /dev/null
+++ b/mate-menus-1.22.patch
@@ -0,0 +1,156 @@
+--- mate-mintmenu-5.9.1.orig/mintmenu/usr/lib/linuxmint/mintMenu/plugins/applications.py	2019-03-19 23:11:55.748303593 +0100
++++ mate-mintmenu-5.9.1/mintmenu/usr/lib/linuxmint/mintMenu/plugins/applications.py	2019-03-20 00:04:22.751620910 +0100
+@@ -2,8 +2,9 @@
+ 
+ import gi
+ gi.require_version("Gtk", "3.0")
++gi.require_version("MateMenu", "2.0")
+ 
+-from gi.repository import Gtk, Pango, Gdk, Gio, GLib
++from gi.repository import Gtk, Pango, Gdk, Gio, GLib, MateMenu
+ 
+ import os
+ import time
+@@ -20,8 +21,6 @@
+ import recentHelper as RecentHelper
+ import pipes
+ 
+-import matemenu
+-
+ from user import home
+ 
+ # i18n
+@@ -86,7 +85,8 @@
+ 
+ class Menu:
+     def __init__( self, MenuToLookup ):
+-        self.tree = matemenu.lookup_tree( MenuToLookup )
++        self.tree = MateMenu.Tree.new( MenuToLookup, MateMenu.TreeFlags.NONE )
++        self.tree.load_sync()
+         self.directory = self.tree.get_root_directory()
+ 
+     def getMenus( self, parent=None ):
+@@ -94,19 +94,29 @@
+             #gives top-level "Applications" item
+             yield self.tree.root
+         else:
+-            for menu in parent.get_contents():
+-                if menu.get_type() == matemenu.TYPE_DIRECTORY and self.__isVisible( menu ):
+-                    yield menu
++            item_iter = parent.iter()
++            item_type = item_iter.next()
++            while item_type != MateMenu.TreeItemType.INVALID:
++                if item_type == MateMenu.TreeItemType.DIRECTORY:
++                    item = item_iter.get_directory()
++                    if self.__isVisible( item ):
++                        yield item
++                item_type = item_iter.next()
+ 
+     def getItems( self, menu ):
+-        for item in menu.get_contents():
+-            if item.get_type() == matemenu.TYPE_ENTRY and item.get_desktop_file_id()[-19:] != '-usercustom.desktop' and self.__isVisible( item ):
+-                yield item
++        item_iter = menu.iter()
++        item_type = item_iter.next()
++        while item_type != MateMenu.TreeItemType.INVALID:
++            if item_type == MateMenu.TreeItemType.ENTRY:
++                item = item_iter.get_entry()
++                if item.get_desktop_file_id()[-19:] != '-usercustom.desktop' and self.__isVisible( item ):
++                    yield item
+ 
+     def __isVisible( self, item ):
+-        if item.get_type() == matemenu.TYPE_ENTRY:
+-            return not ( item.get_is_excluded() or item.get_is_nodisplay() )
+-        if item.get_type() == matemenu.TYPE_DIRECTORY and len( item.get_contents() ):
++        if isinstance(item, MateMenu.TreeEntry):
++            app_info = item.get_app_info()
++            return not ( item.get_is_excluded() or app_info.get_nodisplay() )
++        if isinstance(item, MateMenu.TreeDirectory) and item.iter().next() != MateMenu.TreeItemType.INVALID:
+             return True
+ 
+ 
+@@ -271,7 +281,7 @@
+ 
+         for mainitems in [ "mate-applications.menu", "mate-settings.menu" ]:
+             mymenu = Menu( mainitems )
+-            mymenu.tree.add_monitor( self.menuChanged, None )
++            mymenu.tree.connect( "changed", self.menuChanged )
+ 
+         self.refresh_apt_cache()
+         self.suggestions = []
+@@ -1726,13 +1736,14 @@
+         num = 1
+ 
+         for menu in self.menuFiles:
+-            for child in menu.directory.get_contents():
+-                if child.get_type() == matemenu.TYPE_DIRECTORY:
+-                    icon =  str(child.icon)
+-                    #if (icon == "preferences-system"):
+-                    #       self.adminMenu = child.name
+-                    #if (icon != "applications-system" and icon != "applications-other"):
+-                    newCategoryList.append( { "name": child.name, "icon": child.icon, "tooltip": child.name, "filter": child.name, "index": num } )
++            item_iter = menu.directory.iter()
++            item_type = item_iter.next()
++            while item_type != MateMenu.TreeItemType.INVALID:
++                if item_type == MateMenu.TreeItemType.DIRECTORY:
++                    child = item_iter.get_directory()
++                    icon = child.get_icon().get_names()[0]
++                    newCategoryList.append( { "name": child.get_name(), "icon": icon, "tooltip": child.get_name(), "filter": child.get_name(), "index": num } )
++                item_type = item_iter.next()
+             num += 1
+ 
+         return newCategoryList
+@@ -1743,29 +1754,34 @@
+         newApplicationsList = []
+ 
+         def find_applications_recursively(app_list, directory, catName):
+-            for item in directory.get_contents():
+-                if item.get_type() == matemenu.TYPE_ENTRY:
++            item_iter = directory.iter()
++            item_type = item_iter.next()
++            while item_type != MateMenu.TreeItemType.INVALID:
++                if item_type == MateMenu.TreeItemType.ENTRY:
++                    item = item_iter.get_entry()
+                     app_list.append( { "entry": item, "category": catName } )
+-                elif item.get_type() == matemenu.TYPE_DIRECTORY:
++                elif item_type == MateMenu.TreeItemType.DIRECTORY:
++                    item = item_iter.get_directory()
+                     find_applications_recursively(app_list, item, catName)
++                item_type = item_iter.next()
+ 
+         for menu in self.menuFiles:
+             directory = menu.directory
+-            for entry in directory.get_contents():
+-                if entry.get_type() == matemenu.TYPE_DIRECTORY and len(entry.get_contents()):
+-                    #Entry is a top-level category
+-                    #catName = entry.name
+-                    #icon = str(entry.icon)
+-                    #if (icon == "applications-system" or icon == "applications-other"):
+-                    #       catName = self.adminMenu
+-                    for item in entry.get_contents():
+-                        if item.get_type() == matemenu.TYPE_DIRECTORY:
+-                            find_applications_recursively(newApplicationsList, item, entry.name)
+-                        elif item.get_type() == matemenu.TYPE_ENTRY:
+-                            newApplicationsList.append( { "entry": item, "category": entry.name } )
+-                #elif entry.get_type() == matemenu.TYPE_ENTRY:
+-                #       if not (entry.get_is_excluded() or entry.get_is_nodisplay()):
+-                #               print "=======>>> " + item.name + " = top level"
+-                #               newApplicationsList.append( { "entry": item, "category": "" } )
++            entry_iter = directory.iter()
++            entry_type = entry_iter.next()
++            while entry_type != MateMenu.TreeItemType.INVALID:
++                if entry_type == MateMenu.TreeItemType.DIRECTORY:
++                    entry = entry_iter.get_directory()
++                    item_iter = entry.iter()
++                    item_type = item_iter.next()
++                    while item_type != MateMenu.TreeItemType.INVALID:
++                        if item_type == MateMenu.TreeItemType.ENTRY:
++                            item = item_iter.get_entry()
++                            newApplicationsList.append( { "entry": item, "category": entry.get_name() } )
++                        elif item_type == MateMenu.TreeItemType.DIRECTORY:
++                            item = item_iter.get_directory()
++                            find_applications_recursively(newApplicationsList, item, entry.get_name())
++                        item_type = item_iter.next()
++                entry_type = entry_iter.next()
+ 
+         return newApplicationsList
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/mate-mintmenu.git/commitdiff/4771d01abafef546264d31ce0fe223983750fbf3



More information about the pld-cvs-commit mailing list