~mjz/+junk/testing

« back to all changes in this revision

Viewing changes to slickswitcher/slickswitcher.py

  • Committer: Matt
  • Date: 2008-07-16 21:05:04 UTC
  • Revision ID: sharkbaitbobby@gmail.com-20080716210504-ap512emd1y6n134o
* slickswitcher:
 -Probable fix for memory leaks
 -Several minor fixes
 -NOW really doesn't die without gconf

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
pygtk.require('2.0')
30
30
import gtk
31
31
import gobject
 
32
import gc
32
33
 
33
34
import cairo
34
35
import drawing, switch, settings
35
36
from os.path import exists, isdir
36
37
 
37
38
#For debugging the leaks (might not work)
38
 
import gc
39
39
gc.set_debug(gc.DEBUG_LEAK)
40
40
 
41
41
try:
262
262
      self.hide()
263
263
    self.contexts.append(cairo.Context(self.icon.surface))
264
264
    self.set_icon_context(self.contexts[-1])
265
 
    if len(self.contexts) >= 3:
 
265
    if len(self.contexts) >= 4:
266
266
      del self.contexts[0]
 
267
      gc.collect()
267
268
  
268
269
  #Called only from gobject every second
269
270
  def timeout_icon(self):
310
311
    
311
312
    #Connect the two items to functions when selected
312
313
    prefs_menu.connect('activate',self.show_prefs)
 
314
    #Detach does this automagically :)
313
315
    about_menu.connect('activate',self.show_about)
314
316
    
315
317
    #Now create the menu to put the items in and show it
320
322
    menu.show_all()
321
323
    menu.popup(None, None, None, event.button, event.time)
322
324
  
323
 
  #When the user middle-clicks, it'll show the desktop
 
325
  #When the user middle-clicks, it'll show/hide the desktop
324
326
  def show_desktop(self, event):
325
327
    self.switch.show_desktop()
326
328
  
344
346
    win.set_authors(['Original Author:', '  diogodivision', \
345
347
      'Rewriters:', '  sharkbaitbobby <sharkbaitbobby+awn@gmail.com>', \
346
348
      '  isaacj87 <isaac_j87@yahoo.com>', '  Nonozerobo'])
347
 
    win.set_comments('Needs a name')
 
349
    win.set_comments(_('A visual workspace switcher'))
348
350
    win.set_license('This program is free software; you can redistribute it '+ \
349
351
      'and/or modify it under the terms of the GNU General Public License '+ \
350
352
      'as published by the Free Software Foundation; either version 2 of '+ \
361
363
      'Redone by sharkbaitbobby'])
362
364
    win.run()
363
365
    win.destroy()
 
366
    del icon
 
367
    gc.collect()
364
368
  
365
369
  #Get the background image as a surface
366
370
  def update_background(self, *args):
384
388
      #  exists
385
389
      #  isn't a directory
386
390
      #  hasn changed
387
 
      #Also check if the height hasn changed
 
391
      #Also check if the height hasn't changed
388
392
      
389
393
      #Hooray parentheses!
390
394
      if (self.last_height != self.height) or ((bg_path is not None)  and \
417
421
          cr.restore()
418
422
          
419
423
          #All went well; save the surface
 
424
          if self.background is not None:
 
425
            del self.background
 
426
            gc.collect()
420
427
          self.background = surface
421
428
        
422
429
        #Something went wrong
429
436
              gtk.gdk.INTERP_BILINEAR)
430
437
            
431
438
            #All went well; save the pixbuf
 
439
            if self.background is not None:
 
440
              del self.background
 
441
              gc.collect()
432
442
            self.background = pixbuf
433
443
          
434
444
          #Something went wrong
435
445
          except:
436
446
            #Get a blank image as a surface
 
447
            if self.background is not None:
 
448
              del self.background
 
449
              gc.collect()
437
450
            self.background = self.no_background()
438
451
      
439
452
      #Either the path is None, is '', doesn't exist, is a directory, or hasn't
445
458
          isdir(bg_path):
446
459
          
447
460
          #Get a blank image as a surface
 
461
          if self.background is not None:
 
462
            del self.background
 
463
            gc.collect()
448
464
          self.background = self.no_background()
 
465
    
 
466
    #GConf is not installed
 
467
    else:
 
468
      #Get a blank image as a surface
 
469
      if self.background is not None:
 
470
        del self.background
 
471
        gc.collect()
 
472
      self.background = self.no_background()
449
473
  
450
474
  #Return a blank image as a surface
451
475
  def no_background(self):