]>
Commit | Line | Data |
---|---|---|
4771d01a JP |
1 | --- mate-mintmenu-5.9.1.orig/mintmenu/usr/lib/linuxmint/mintMenu/plugins/applications.py 2019-03-19 23:11:55.748303593 +0100 |
2 | +++ mate-mintmenu-5.9.1/mintmenu/usr/lib/linuxmint/mintMenu/plugins/applications.py 2019-03-20 00:04:22.751620910 +0100 | |
3 | @@ -2,8 +2,9 @@ | |
4 | ||
5 | import gi | |
6 | gi.require_version("Gtk", "3.0") | |
7 | +gi.require_version("MateMenu", "2.0") | |
8 | ||
9 | -from gi.repository import Gtk, Pango, Gdk, Gio, GLib | |
10 | +from gi.repository import Gtk, Pango, Gdk, Gio, GLib, MateMenu | |
11 | ||
12 | import os | |
13 | import time | |
14 | @@ -20,8 +21,6 @@ | |
15 | import recentHelper as RecentHelper | |
16 | import pipes | |
17 | ||
18 | -import matemenu | |
19 | - | |
20 | from user import home | |
21 | ||
22 | # i18n | |
23 | @@ -86,7 +85,8 @@ | |
24 | ||
25 | class Menu: | |
26 | def __init__( self, MenuToLookup ): | |
27 | - self.tree = matemenu.lookup_tree( MenuToLookup ) | |
28 | + self.tree = MateMenu.Tree.new( MenuToLookup, MateMenu.TreeFlags.NONE ) | |
29 | + self.tree.load_sync() | |
30 | self.directory = self.tree.get_root_directory() | |
31 | ||
32 | def getMenus( self, parent=None ): | |
33 | @@ -94,19 +94,29 @@ | |
34 | #gives top-level "Applications" item | |
35 | yield self.tree.root | |
36 | else: | |
37 | - for menu in parent.get_contents(): | |
38 | - if menu.get_type() == matemenu.TYPE_DIRECTORY and self.__isVisible( menu ): | |
39 | - yield menu | |
40 | + item_iter = parent.iter() | |
41 | + item_type = item_iter.next() | |
42 | + while item_type != MateMenu.TreeItemType.INVALID: | |
43 | + if item_type == MateMenu.TreeItemType.DIRECTORY: | |
44 | + item = item_iter.get_directory() | |
45 | + if self.__isVisible( item ): | |
46 | + yield item | |
47 | + item_type = item_iter.next() | |
48 | ||
49 | def getItems( self, menu ): | |
50 | - for item in menu.get_contents(): | |
51 | - if item.get_type() == matemenu.TYPE_ENTRY and item.get_desktop_file_id()[-19:] != '-usercustom.desktop' and self.__isVisible( item ): | |
52 | - yield item | |
53 | + item_iter = menu.iter() | |
54 | + item_type = item_iter.next() | |
55 | + while item_type != MateMenu.TreeItemType.INVALID: | |
56 | + if item_type == MateMenu.TreeItemType.ENTRY: | |
57 | + item = item_iter.get_entry() | |
58 | + if item.get_desktop_file_id()[-19:] != '-usercustom.desktop' and self.__isVisible( item ): | |
59 | + yield item | |
60 | ||
61 | def __isVisible( self, item ): | |
62 | - if item.get_type() == matemenu.TYPE_ENTRY: | |
63 | - return not ( item.get_is_excluded() or item.get_is_nodisplay() ) | |
64 | - if item.get_type() == matemenu.TYPE_DIRECTORY and len( item.get_contents() ): | |
65 | + if isinstance(item, MateMenu.TreeEntry): | |
66 | + app_info = item.get_app_info() | |
67 | + return not ( item.get_is_excluded() or app_info.get_nodisplay() ) | |
68 | + if isinstance(item, MateMenu.TreeDirectory) and item.iter().next() != MateMenu.TreeItemType.INVALID: | |
69 | return True | |
70 | ||
71 | ||
72 | @@ -271,7 +281,7 @@ | |
73 | ||
74 | for mainitems in [ "mate-applications.menu", "mate-settings.menu" ]: | |
75 | mymenu = Menu( mainitems ) | |
76 | - mymenu.tree.add_monitor( self.menuChanged, None ) | |
77 | + mymenu.tree.connect( "changed", self.menuChanged ) | |
78 | ||
79 | self.refresh_apt_cache() | |
80 | self.suggestions = [] | |
81 | @@ -1726,13 +1736,14 @@ | |
82 | num = 1 | |
83 | ||
84 | for menu in self.menuFiles: | |
85 | - for child in menu.directory.get_contents(): | |
86 | - if child.get_type() == matemenu.TYPE_DIRECTORY: | |
87 | - icon = str(child.icon) | |
88 | - #if (icon == "preferences-system"): | |
89 | - # self.adminMenu = child.name | |
90 | - #if (icon != "applications-system" and icon != "applications-other"): | |
91 | - newCategoryList.append( { "name": child.name, "icon": child.icon, "tooltip": child.name, "filter": child.name, "index": num } ) | |
92 | + item_iter = menu.directory.iter() | |
93 | + item_type = item_iter.next() | |
94 | + while item_type != MateMenu.TreeItemType.INVALID: | |
95 | + if item_type == MateMenu.TreeItemType.DIRECTORY: | |
96 | + child = item_iter.get_directory() | |
97 | + icon = child.get_icon().get_names()[0] | |
98 | + newCategoryList.append( { "name": child.get_name(), "icon": icon, "tooltip": child.get_name(), "filter": child.get_name(), "index": num } ) | |
99 | + item_type = item_iter.next() | |
100 | num += 1 | |
101 | ||
102 | return newCategoryList | |
103 | @@ -1743,29 +1754,34 @@ | |
104 | newApplicationsList = [] | |
105 | ||
106 | def find_applications_recursively(app_list, directory, catName): | |
107 | - for item in directory.get_contents(): | |
108 | - if item.get_type() == matemenu.TYPE_ENTRY: | |
109 | + item_iter = directory.iter() | |
110 | + item_type = item_iter.next() | |
111 | + while item_type != MateMenu.TreeItemType.INVALID: | |
112 | + if item_type == MateMenu.TreeItemType.ENTRY: | |
113 | + item = item_iter.get_entry() | |
114 | app_list.append( { "entry": item, "category": catName } ) | |
115 | - elif item.get_type() == matemenu.TYPE_DIRECTORY: | |
116 | + elif item_type == MateMenu.TreeItemType.DIRECTORY: | |
117 | + item = item_iter.get_directory() | |
118 | find_applications_recursively(app_list, item, catName) | |
119 | + item_type = item_iter.next() | |
120 | ||
121 | for menu in self.menuFiles: | |
122 | directory = menu.directory | |
123 | - for entry in directory.get_contents(): | |
124 | - if entry.get_type() == matemenu.TYPE_DIRECTORY and len(entry.get_contents()): | |
125 | - #Entry is a top-level category | |
126 | - #catName = entry.name | |
127 | - #icon = str(entry.icon) | |
128 | - #if (icon == "applications-system" or icon == "applications-other"): | |
129 | - # catName = self.adminMenu | |
130 | - for item in entry.get_contents(): | |
131 | - if item.get_type() == matemenu.TYPE_DIRECTORY: | |
132 | - find_applications_recursively(newApplicationsList, item, entry.name) | |
133 | - elif item.get_type() == matemenu.TYPE_ENTRY: | |
134 | - newApplicationsList.append( { "entry": item, "category": entry.name } ) | |
135 | - #elif entry.get_type() == matemenu.TYPE_ENTRY: | |
136 | - # if not (entry.get_is_excluded() or entry.get_is_nodisplay()): | |
137 | - # print "=======>>> " + item.name + " = top level" | |
138 | - # newApplicationsList.append( { "entry": item, "category": "" } ) | |
139 | + entry_iter = directory.iter() | |
140 | + entry_type = entry_iter.next() | |
141 | + while entry_type != MateMenu.TreeItemType.INVALID: | |
142 | + if entry_type == MateMenu.TreeItemType.DIRECTORY: | |
143 | + entry = entry_iter.get_directory() | |
144 | + item_iter = entry.iter() | |
145 | + item_type = item_iter.next() | |
146 | + while item_type != MateMenu.TreeItemType.INVALID: | |
147 | + if item_type == MateMenu.TreeItemType.ENTRY: | |
148 | + item = item_iter.get_entry() | |
149 | + newApplicationsList.append( { "entry": item, "category": entry.get_name() } ) | |
150 | + elif item_type == MateMenu.TreeItemType.DIRECTORY: | |
151 | + item = item_iter.get_directory() | |
152 | + find_applications_recursively(newApplicationsList, item, entry.get_name()) | |
153 | + item_type = item_iter.next() | |
154 | + entry_type = entry_iter.next() | |
155 | ||
156 | return newApplicationsList |