Change how we get icons for easybuttons
This commit is contained in:
parent
abd330d36a
commit
3e997985b8
@ -542,9 +542,8 @@ class MenuWin( object ):
|
|||||||
|
|
||||||
self.mainwin.window.set_name("mintmenu") # Name used in Gtk RC files
|
self.mainwin.window.set_name("mintmenu") # Name used in Gtk RC files
|
||||||
|
|
||||||
icon = iconManager.getIcon( self.mainwin.icon, 1 )
|
if self.mainwin.icon:
|
||||||
if icon:
|
Gtk.Window.set_default_icon_name( self.mainwin.icon )
|
||||||
Gtk.Window.set_default_icon( icon )
|
|
||||||
|
|
||||||
self.bind_hot_key()
|
self.bind_hot_key()
|
||||||
|
|
||||||
|
@ -56,52 +56,32 @@ class IconManager(GObject.GObject):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
iconFileName = ""
|
||||||
|
canSetByName = True
|
||||||
#[ iconWidth, iconHeight ] = self.getIconSize( iconSize )
|
#[ iconWidth, iconHeight ] = self.getIconSize( iconSize )
|
||||||
if iconSize <= 0:
|
if iconSize <= 0:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if iconName in self.cache and iconSize in self.cache[iconName]:
|
|
||||||
iconFileName = self.cache[iconName][iconSize]
|
|
||||||
elif os.path.isabs( iconName ):
|
elif os.path.isabs( iconName ):
|
||||||
iconFileName = iconName
|
iconFileName = iconName
|
||||||
|
canSetByName = False
|
||||||
else:
|
else:
|
||||||
if iconName[-4:] in [".png", ".xpm", ".svg", ".gif"]:
|
if iconName[-4:] in [".png", ".xpm", ".svg", ".gif"]:
|
||||||
realIconName = iconName[:-4]
|
realIconName = iconName[:-4]
|
||||||
else:
|
else:
|
||||||
realIconName = iconName
|
realIconName = iconName
|
||||||
tmp = None
|
|
||||||
for theme in self.themes:
|
|
||||||
if theme.has_icon( realIconName ):
|
|
||||||
tmp = theme.lookup_icon( realIconName, iconSize, 0 )
|
|
||||||
if tmp:
|
|
||||||
break
|
|
||||||
|
|
||||||
if tmp:
|
if iconFileName and not canSetByName and os.path.exists( iconFileName ):
|
||||||
iconFileName = tmp.get_filename()
|
pb = GdkPixbuf.Pixbuf.new_from_file_at_size( iconFileName, iconSize, iconSize )
|
||||||
|
image = Gtk.Image.new_from_pixbuf(pb)
|
||||||
|
elif canSetByName:
|
||||||
|
image = Gtk.Image()
|
||||||
|
image.set_from_icon_name(realIconName, Gtk.IconSize.DND)
|
||||||
|
image.set_pixel_size(iconSize)
|
||||||
else:
|
else:
|
||||||
iconFileName = ""
|
image = None
|
||||||
|
|
||||||
if iconFileName and os.path.exists( iconFileName ):
|
return image
|
||||||
icon = GdkPixbuf.Pixbuf.new_from_file_at_size( iconFileName, iconSize, iconSize )
|
|
||||||
else:
|
|
||||||
icon = None
|
|
||||||
|
|
||||||
|
|
||||||
# if the actual icon size is to far from the desired size resize it
|
|
||||||
if icon and (( icon.get_width() - iconSize ) > 5 or ( icon.get_height() - iconSize ) > 5):
|
|
||||||
if icon.get_width() > icon.get_height():
|
|
||||||
newIcon = icon.scale_simple( iconSize, icon.get_height() * iconSize / icon.get_width(), GdkPixbuf.InterpType.BILINEAR )
|
|
||||||
else:
|
|
||||||
newIcon = icon.scale_simple( icon.get_width() * iconSize / icon.get_height(), iconSize, GdkPixbuf.InterpType.BILINEAR )
|
|
||||||
del icon
|
|
||||||
icon = newIcon
|
|
||||||
|
|
||||||
if iconName in self.cache:
|
|
||||||
self.cache[iconName][iconSize] = iconFileName
|
|
||||||
else:
|
|
||||||
self.cache[iconName] = { iconSize : iconFileName }
|
|
||||||
|
|
||||||
return icon
|
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
print "Exception " + e.__class__.__name__ + ": " + e.message
|
print "Exception " + e.__class__.__name__ + ": " + e.message
|
||||||
return None
|
return None
|
||||||
@ -132,13 +112,14 @@ class easyButton( Gtk.Button ):
|
|||||||
self.buttonImage = Gtk.Image()
|
self.buttonImage = Gtk.Image()
|
||||||
icon = self.getIcon( self.iconSize )
|
icon = self.getIcon( self.iconSize )
|
||||||
if icon:
|
if icon:
|
||||||
self.buttonImage.set_from_pixbuf( icon )
|
self.buttonImage = icon
|
||||||
del icon
|
|
||||||
else:
|
else:
|
||||||
#[ iW, iH ] = iconManager.getIconSize( self.iconSize )
|
#[ iW, iH ] = iconManager.getIconSize( self.iconSize )
|
||||||
self.buttonImage.set_size_request( self.iconSize, self.iconSize )
|
self.buttonImage.set_size_request( self.iconSize, self.iconSize )
|
||||||
self.buttonImage.show()
|
self.image_box = Gtk.HBox()
|
||||||
HBox1.pack_start( self.buttonImage, False, False, 5 )
|
self.image_box.pack_start(self.buttonImage, False, False, 5)
|
||||||
|
self.image_box.show_all()
|
||||||
|
HBox1.pack_start( self.image_box, False, False, 0 )
|
||||||
|
|
||||||
if labels:
|
if labels:
|
||||||
for label in labels:
|
for label in labels:
|
||||||
@ -208,17 +189,15 @@ class easyButton( Gtk.Button ):
|
|||||||
|
|
||||||
# IconTheme changed, setup new button icons
|
# IconTheme changed, setup new button icons
|
||||||
def themeChanged( self, theme ):
|
def themeChanged( self, theme ):
|
||||||
#self.iconChanged()
|
self.iconChanged()
|
||||||
# Do nothing, this crashes mintmenu with a segfault..
|
|
||||||
pass
|
|
||||||
|
|
||||||
def iconChanged( self ):
|
def iconChanged( self ):
|
||||||
icon = self.getIcon( self.iconSize )
|
icon = self.getIcon( self.iconSize )
|
||||||
self.buttonImage.clear()
|
self.buttonImage.destroy()
|
||||||
if icon:
|
if icon:
|
||||||
self.buttonImage.set_from_pixbuf( icon )
|
self.buttonImage = icon
|
||||||
self.buttonImage.set_size_request( -1, -1 )
|
self.image_box.pack_start(self.buttonImage, False, False, 5)
|
||||||
del icon
|
self.image_box.show_all()
|
||||||
else:
|
else:
|
||||||
#[iW, iH ] = iconManager.getIconSize( self.iconSize )
|
#[iW, iH ] = iconManager.getIconSize( self.iconSize )
|
||||||
self.buttonImage.set_size_request( self.iconSize, self.iconSize )
|
self.buttonImage.set_size_request( self.iconSize, self.iconSize )
|
||||||
@ -226,11 +205,11 @@ class easyButton( Gtk.Button ):
|
|||||||
def setIconSize( self, size ):
|
def setIconSize( self, size ):
|
||||||
self.iconSize = size
|
self.iconSize = size
|
||||||
icon = self.getIcon( self.iconSize )
|
icon = self.getIcon( self.iconSize )
|
||||||
self.buttonImage.clear()
|
self.buttonImage.destroy()
|
||||||
if icon:
|
if icon:
|
||||||
self.buttonImage.set_from_pixbuf( icon )
|
self.buttonImage = icon
|
||||||
self.buttonImage.set_size_request( -1, -1 )
|
self.image_box.pack_start(self.buttonImage, False, False, 5)
|
||||||
del icon
|
self.image_box.show_all()
|
||||||
elif self.iconSize:
|
elif self.iconSize:
|
||||||
#[ iW, iH ] = iconManager.getIconSize( self.iconSize )
|
#[ iW, iH ] = iconManager.getIconSize( self.iconSize )
|
||||||
self.buttonImage.set_size_request( self.iconSize, self.iconSize )
|
self.buttonImage.set_size_request( self.iconSize, self.iconSize )
|
||||||
@ -277,10 +256,10 @@ class ApplicationLauncher( easyButton ):
|
|||||||
targets = array(( "text/plain", 0, 100 ), ( "text/uri-list", 0, 101 ))
|
targets = array(( "text/plain", 0, 100 ), ( "text/uri-list", 0, 101 ))
|
||||||
gtk.gtk_drag_source_set(hash(self), Gdk.ModifierType.BUTTON1_MASK, targets, 2, Gdk.DragAction.COPY)
|
gtk.gtk_drag_source_set(hash(self), Gdk.ModifierType.BUTTON1_MASK, targets, 2, Gdk.DragAction.COPY)
|
||||||
|
|
||||||
icon = self.getIcon( Gtk.IconSize.DND )
|
# icon = self.getIcon( Gtk.IconSize.DND )
|
||||||
if icon:
|
# if icon:
|
||||||
gtk.gtk_drag_source_set_icon_pixbuf( hash(self), hash(icon) )
|
# gtk.gtk_drag_source_set_icon_pixbuf( hash(self), hash(icon) )
|
||||||
del icon
|
# del icon
|
||||||
|
|
||||||
self.connectSelf( "focus-in-event", self.onFocusIn )
|
self.connectSelf( "focus-in-event", self.onFocusIn )
|
||||||
self.connectSelf( "focus-out-event", self.onFocusOut )
|
self.connectSelf( "focus-out-event", self.onFocusOut )
|
||||||
@ -394,10 +373,10 @@ class ApplicationLauncher( easyButton ):
|
|||||||
def iconChanged( self ):
|
def iconChanged( self ):
|
||||||
easyButton.iconChanged( self )
|
easyButton.iconChanged( self )
|
||||||
|
|
||||||
icon = self.getIcon( Gtk.IconSize.DND )
|
# icon = self.getIcon( Gtk.IconSize.DND )
|
||||||
if icon:
|
# if icon:
|
||||||
gtk.gtk_drag_source_set_icon_pixbuf( hash(self), hash(icon) )
|
# gtk.gtk_drag_source_set_icon_pixbuf( hash(self), hash(icon) )
|
||||||
del icon
|
# del icon
|
||||||
|
|
||||||
def startupFileChanged( self, *args ):
|
def startupFileChanged( self, *args ):
|
||||||
self.inStartup = os.path.exists( self.startupFilePath )
|
self.inStartup = os.path.exists( self.startupFilePath )
|
||||||
@ -453,10 +432,10 @@ class ApplicationLauncher( easyButton ):
|
|||||||
for child in self.labelBox:
|
for child in self.labelBox:
|
||||||
child.destroy()
|
child.destroy()
|
||||||
|
|
||||||
#self.iconName = self.appIconName
|
self.iconName = self.appIconName
|
||||||
|
|
||||||
self.setupLabels()
|
self.setupLabels()
|
||||||
#self.iconChanged()
|
self.iconChanged()
|
||||||
exists = True
|
exists = True
|
||||||
break
|
break
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user