~gnomenu-team/gnomenu/trunk

« back to all changes in this revision

Viewing changes to src/lib/gnomenu/Menu_Items.py

  • Committer: helder
  • Date: 2010-06-15 21:21:34 UTC
  • Revision ID: helder@helder-laptop-20100615212134-553qj7cg3qa3004w
made gnomenu uber fast by using a cache method

Show diffs side-by-side

added added

removed removed

Lines of Context:
71
71
                self.menuparser.connect('menu-changed',self.MenuChanged)
72
72
                self.AppsFile = None
73
73
                self.SetFile = None
 
74
                self.menucache = {}
74
75
                if Globals.OnlyShowFavs: 
75
76
                        self.BaseMenu = '<Favorites>'
76
77
                        self.menuparser.CacheApplications = None
104
105
                except:
105
106
                        self.webbookmarker = None
106
107
                ##### Construct the menu###########################
107
 
                self.ConstructMenu()
 
108
                self.menuitems = 'settings','places','auxiliary','recent','recentapps','webbookmarks','favorites','shutdown','all'
 
109
                for item in self.menuitems:
 
110
                        self.Restart(item)
108
111
                gc.collect()
109
112
 
110
113
        def MenuChanged(self,event):
116
119
                else:
117
120
                        if self.BaseMenu ==self.menuparser.CacheApplications:self.BaseMenu = self.menuparser.CacheApplications
118
121
                        elif self.BaseMenu ==self.menuparser.CacheSettings:self.BaseMenu = self.menuparser.CacheSettings
 
122
                del self.menucache[self.Menu]
119
123
                self.emit('changed')
120
124
                gc.collect()
121
125
 
188
192
                self.recents_changed = True
189
193
                if self.BaseMenu == "<RecentItems>":
190
194
                        self.emit('changed')
 
195
                del self.menucache["<RecentItems>"]
 
196
                del self.menucache["<RecentApps>"]
191
197
 
192
198
        def on_drive_changed (self,widget,drive):
193
199
                """Bookmarks have changed"""
194
200
                print 'drives changed'
195
201
                if self.BaseMenu == "<Bookmarks>":
196
202
                        self.emit('changed')
 
203
                del self.menucache["<Bookmarks>"]
197
204
 
198
205
        def ConstructMenu(self):
199
206
                """Construct the menu"""
200
207
                #aaa = time.clock()
 
208
                if self.menucache.has_key(self.Menu):
 
209
                        self.L_Names, self.L_Icons, self.L_Icons_menu, self.L_Types,self.L_Paths, self.L_Execs= self.menucache[self.Menu]
 
210
                        return
201
211
                self.L_Names = []
202
212
                self.L_Icons = []
203
213
                self.L_Types = []
432
442
                #gc.collect()
433
443
 
434
444
                #print time.clock() -aaa
 
445
                self.menucache[self.Menu] = self.L_Names, self.L_Icons, self.L_Icons_menu,      self.L_Types, self.L_Paths, self.L_Execs
 
446
 
435
447
        def SearchMenu(self, folder):
436
448
                """search the menu"""
437
449
                for entry in self.menuparser.GetMenuEntries(folder):
643
655
                if '%s::%s::%s::%s' % (name, execs, ico, typ) not in favlist:
644
656
                        favlist.append('%s::%s::%s::%s' % (name, execs, ico, typ))
645
657
                        backend.save_setting("favorites",favlist)
 
658
                        del self.menucache["<Favorites>"]
646
659
                        self.notifier.notify('%s %s' % (name, _('added to favorites list')),Globals.name,Globals.Applogo,5000)
647
660
                
648
661
        def removefav(self,widget,event,name, execs,ico,typ):
653
666
                        favlist.remove('%s::%s::%s::%s' % (name, execs, ico, typ))
654
667
                        backend.save_setting("favorites",favlist)
655
668
                        self.emit('changed')
 
669
                        del self.menucache["<Favorites>"]
656
670
                        self.notifier.notify('%s %s' % (name, _('removed from favorites list')),Globals.name,Globals.Applogo,5000)
657
671
 
658
672
        def create_autostarter (self,widget,event,name, execs,ico,typ):