Remove support for custom colors
Since the move to GTK3 custom color support is extremely hacky and buggy: - It relies on gtk_widget_override_color() which is deprecated - Only one call to gtk_widget_override_color() is functional, successive calls are ignored, leading to the menu not changing colors when the custom colors are changed or enabled/disabled. - RegenPlugins leads to a loss of color. - Theme changes are broken due to overridden colors. The feature is also very niche and quite unecessary. If a custom color is better than the default one we should apply the change in the theme or define a new theme which inherits ours and simply defines the menu differently. The way to do this, in line with GTK's design, is via CSS at theme level.
This commit is contained in:
parent
3ad195599b
commit
b7a1fa0b94
@ -63,9 +63,6 @@ class MainWindow(object):
|
|||||||
|
|
||||||
builder.connect_signals(self)
|
builder.connect_signals(self)
|
||||||
|
|
||||||
self.panesToColor = []
|
|
||||||
self.headingsToColor = []
|
|
||||||
|
|
||||||
self.window.connect("key-press-event", self.onKeyPress)
|
self.window.connect("key-press-event", self.onKeyPress)
|
||||||
self.window.connect("focus-in-event", self.onFocusIn)
|
self.window.connect("focus-in-event", self.onFocusIn)
|
||||||
self.loseFocusId = self.window.connect("focus-out-event", self.onFocusOut)
|
self.loseFocusId = self.window.connect("focus-out-event", self.onFocusOut)
|
||||||
@ -79,9 +76,6 @@ class MainWindow(object):
|
|||||||
self.settings.connect("changed::plugins-list", self.RegenPlugins)
|
self.settings.connect("changed::plugins-list", self.RegenPlugins)
|
||||||
self.settings.connect("changed::start-with-favorites", self.toggleStartWithFavorites)
|
self.settings.connect("changed::start-with-favorites", self.toggleStartWithFavorites)
|
||||||
self.settings.connect("changed::tooltips-enabled", self.toggleTooltipsEnabled)
|
self.settings.connect("changed::tooltips-enabled", self.toggleTooltipsEnabled)
|
||||||
self.settings.connect("changed::use-custom-color", self.toggleUseCustomColor)
|
|
||||||
self.settings.connect("changed::custom-heading-color", self.toggleCustomHeadingColor)
|
|
||||||
self.settings.connect("changed::custom-color", self.toggleCustomBackgroundColor)
|
|
||||||
|
|
||||||
self.getSetGSettingEntries()
|
self.getSetGSettingEntries()
|
||||||
|
|
||||||
@ -110,38 +104,20 @@ class MainWindow(object):
|
|||||||
def toggleStartWithFavorites(self, settings, key):
|
def toggleStartWithFavorites(self, settings, key):
|
||||||
self.startWithFavorites = settings.get_boolean(key)
|
self.startWithFavorites = settings.get_boolean(key)
|
||||||
|
|
||||||
def toggleUseCustomColor(self, settings, key):
|
|
||||||
self.usecustomcolor = settings.get_boolean(key)
|
|
||||||
self.loadTheme()
|
|
||||||
|
|
||||||
def toggleCustomBackgroundColor(self, settings, key):
|
|
||||||
self.customcolor = settings.get_string(key)
|
|
||||||
self.setCustomColors()
|
|
||||||
|
|
||||||
def toggleCustomHeadingColor(self, settings, key):
|
|
||||||
self.customheadingcolor = settings.get_string(key)
|
|
||||||
self.setCustomColors()
|
|
||||||
|
|
||||||
def getSetGSettingEntries(self):
|
def getSetGSettingEntries(self):
|
||||||
self.dottedfile = os.path.join(self.path, "dotted.png")
|
self.dottedfile = os.path.join(self.path, "dotted.png")
|
||||||
self.pluginlist = self.settings.get_strv("plugins-list")
|
self.pluginlist = self.settings.get_strv("plugins-list")
|
||||||
self.usecustomcolor = self.settings.get_boolean("use-custom-color")
|
|
||||||
self.customcolor = self.settings.get_string("custom-color")
|
|
||||||
self.customheadingcolor = self.settings.get_string("custom-heading-color")
|
|
||||||
self.offset = self.settings.get_int("offset")
|
self.offset = self.settings.get_int("offset")
|
||||||
self.enableTooltips = self.settings.get_boolean("tooltips-enabled")
|
self.enableTooltips = self.settings.get_boolean("tooltips-enabled")
|
||||||
self.startWithFavorites = self.settings.get_boolean("start-with-favorites")
|
self.startWithFavorites = self.settings.get_boolean("start-with-favorites")
|
||||||
|
|
||||||
def PopulatePlugins(self):
|
def PopulatePlugins(self):
|
||||||
self.panesToColor = []
|
|
||||||
self.headingsToColor = []
|
|
||||||
PluginPane = Gtk.EventBox()
|
PluginPane = Gtk.EventBox()
|
||||||
PluginPane.show()
|
PluginPane.show()
|
||||||
PaneLadder = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
PaneLadder = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
||||||
PluginPane.add(PaneLadder)
|
PluginPane.add(PaneLadder)
|
||||||
ImageBox = Gtk.EventBox()
|
ImageBox = Gtk.EventBox()
|
||||||
ImageBox.show()
|
ImageBox.show()
|
||||||
self.panesToColor.extend([PluginPane, ImageBox])
|
|
||||||
|
|
||||||
seperatorImage = GdkPixbuf.Pixbuf.new_from_file(self.dottedfile)
|
seperatorImage = GdkPixbuf.Pixbuf.new_from_file(self.dottedfile)
|
||||||
|
|
||||||
@ -194,7 +170,6 @@ class MainWindow(object):
|
|||||||
MyPlugin.icon = 'mate-logo-icon.png'
|
MyPlugin.icon = 'mate-logo-icon.png'
|
||||||
print("Unable to load %s plugin" % plugin)
|
print("Unable to load %s plugin" % plugin)
|
||||||
|
|
||||||
self.panesToColor.append(MyPlugin.content_holder)
|
|
||||||
MyPlugin.content_holder.show()
|
MyPlugin.content_holder.show()
|
||||||
|
|
||||||
VBox1 = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
VBox1 = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
||||||
@ -204,7 +179,6 @@ class MainWindow(object):
|
|||||||
Align1 = Gtk.Alignment.new(0, 0, 0, 0)
|
Align1 = Gtk.Alignment.new(0, 0, 0, 0)
|
||||||
Align1.set_padding(10, 5, 10, 0)
|
Align1.set_padding(10, 5, 10, 0)
|
||||||
Align1.add(label1)
|
Align1.add(label1)
|
||||||
self.headingsToColor.append(label1)
|
|
||||||
Align1.show()
|
Align1.show()
|
||||||
label1.show()
|
label1.show()
|
||||||
heading = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
|
heading = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
|
||||||
@ -232,10 +206,6 @@ class MainWindow(object):
|
|||||||
MyPlugin.do_plugin()
|
MyPlugin.do_plugin()
|
||||||
if hasattr(MyPlugin, 'height'):
|
if hasattr(MyPlugin, 'height'):
|
||||||
MyPlugin.content_holder.set_size_request(-1, MyPlugin.height)
|
MyPlugin.content_holder.set_size_request(-1, MyPlugin.height)
|
||||||
if hasattr(MyPlugin, 'itemstocolor'):
|
|
||||||
self.panesToColor.extend(MyPlugin.itemstocolor)
|
|
||||||
if hasattr(MyPlugin, 'headingstocolor'):
|
|
||||||
self.headingsToColor.extend(MyPlugin.headingstocolor)
|
|
||||||
except:
|
except:
|
||||||
# create traceback
|
# create traceback
|
||||||
info = sys.exc_info()
|
info = sys.exc_info()
|
||||||
@ -254,7 +224,6 @@ class MainWindow(object):
|
|||||||
PaneLadder = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
PaneLadder = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
||||||
PluginPane.add(PaneLadder)
|
PluginPane.add(PaneLadder)
|
||||||
ImageBox = Gtk.EventBox()
|
ImageBox = Gtk.EventBox()
|
||||||
self.panesToColor.extend([PluginPane, ImageBox])
|
|
||||||
ImageBox.show()
|
ImageBox.show()
|
||||||
PluginPane.show_all()
|
PluginPane.show_all()
|
||||||
|
|
||||||
@ -274,47 +243,6 @@ class MainWindow(object):
|
|||||||
self.paneholder.pack_start(ImageBox, False, False, 0)
|
self.paneholder.pack_start(ImageBox, False, False, 0)
|
||||||
self.paneholder.pack_start(PluginPane, False, False, 0)
|
self.paneholder.pack_start(PluginPane, False, False, 0)
|
||||||
|
|
||||||
# A little bit hacky but works.
|
|
||||||
@staticmethod
|
|
||||||
def getDefaultColors():
|
|
||||||
widget = Gtk.EventBox()
|
|
||||||
widget.show()
|
|
||||||
|
|
||||||
context = widget.get_style_context()
|
|
||||||
context.set_state(Gtk.StateFlags.NORMAL)
|
|
||||||
context.add_class(Gtk.STYLE_CLASS_DEFAULT)
|
|
||||||
context.add_class(Gtk.STYLE_CLASS_BACKGROUND)
|
|
||||||
|
|
||||||
fgColor = context.get_color(context.get_state())
|
|
||||||
bgColor = context.get_background_color(context.get_state())
|
|
||||||
|
|
||||||
return {"fg": fgColor, "bg": bgColor}
|
|
||||||
|
|
||||||
def loadTheme(self):
|
|
||||||
self.setCustomColors()
|
|
||||||
|
|
||||||
def setCustomColors(self):
|
|
||||||
# Panes
|
|
||||||
for item in self.panesToColor:
|
|
||||||
context = item.get_style_context()
|
|
||||||
if self.usecustomcolor:
|
|
||||||
color = Gdk.RGBA()
|
|
||||||
color.parse(self.customcolor)
|
|
||||||
item.override_background_color(context.get_state(), color)
|
|
||||||
else:
|
|
||||||
colors = self.getDefaultColors()
|
|
||||||
item.override_background_color(context.get_state(), colors["bg"])
|
|
||||||
# Headings
|
|
||||||
for item in self.headingsToColor:
|
|
||||||
context = item.get_style_context()
|
|
||||||
if self.usecustomcolor:
|
|
||||||
color = Gdk.RGBA()
|
|
||||||
color.parse(self.customheadingcolor)
|
|
||||||
item.override_color(context.get_state(), color)
|
|
||||||
else:
|
|
||||||
colors = self.getDefaultColors()
|
|
||||||
item.override_color(context.get_state(), colors["fg"])
|
|
||||||
|
|
||||||
def setTooltip(self, widget, tip):
|
def setTooltip(self, widget, tip):
|
||||||
self.tooltipsWidgets.append(widget)
|
self.tooltipsWidgets.append(widget)
|
||||||
widget.set_tooltip_text(tip)
|
widget.set_tooltip_text(tip)
|
||||||
@ -343,7 +271,6 @@ class MainWindow(object):
|
|||||||
self.getSetGSettingEntries()
|
self.getSetGSettingEntries()
|
||||||
self.PopulatePlugins()
|
self.PopulatePlugins()
|
||||||
self.toggleTooltipsEnabled(self.settings, "tooltips-enabled")
|
self.toggleTooltipsEnabled(self.settings, "tooltips-enabled")
|
||||||
self.loadTheme()
|
|
||||||
|
|
||||||
#print NAME+u" reloaded"
|
#print NAME+u" reloaded"
|
||||||
|
|
||||||
@ -430,7 +357,6 @@ 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
|
||||||
self.applyTheme()
|
self.applyTheme()
|
||||||
self.mainwin.loadTheme()
|
|
||||||
|
|
||||||
if self.mainwin.icon:
|
if self.mainwin.icon:
|
||||||
Gtk.Window.set_default_icon_name(self.mainwin.icon)
|
Gtk.Window.set_default_icon_name(self.mainwin.icon)
|
||||||
@ -567,7 +493,6 @@ class MenuWin(object):
|
|||||||
def changeTheme(self, *args):
|
def changeTheme(self, *args):
|
||||||
self.reloadSettings()
|
self.reloadSettings()
|
||||||
self.applyTheme()
|
self.applyTheme()
|
||||||
self.mainwin.loadTheme()
|
|
||||||
|
|
||||||
def applyTheme(self):
|
def applyTheme(self):
|
||||||
style_settings = Gtk.Settings.get_default()
|
style_settings = Gtk.Settings.get_default()
|
||||||
|
@ -212,7 +212,6 @@ class pluginclass(object):
|
|||||||
self.applicationsScrolledWindow = self.builder.get_object("applicationsScrolledWindow")
|
self.applicationsScrolledWindow = self.builder.get_object("applicationsScrolledWindow")
|
||||||
|
|
||||||
|
|
||||||
self.headingstocolor = [self.builder.get_object("label6"), self.builder.get_object("label2")]
|
|
||||||
self.numApps = 0
|
self.numApps = 0
|
||||||
# These properties are NECESSARY to maintain consistency
|
# These properties are NECESSARY to maintain consistency
|
||||||
|
|
||||||
@ -225,11 +224,6 @@ class pluginclass(object):
|
|||||||
# This should be the first item added to the window in glade
|
# This should be the first item added to the window in glade
|
||||||
self.content_holder = self.builder.get_object("Applications")
|
self.content_holder = self.builder.get_object("Applications")
|
||||||
|
|
||||||
# Items to get custom colors
|
|
||||||
self.itemstocolor = [self.builder.get_object("viewport1"),
|
|
||||||
self.builder.get_object("viewport2"),
|
|
||||||
self.builder.get_object("viewport3")]
|
|
||||||
|
|
||||||
# Unset all timers
|
# Unset all timers
|
||||||
self.filterTimer = None
|
self.filterTimer = None
|
||||||
self.menuChangedTimer = None
|
self.menuChangedTimer = None
|
||||||
|
@ -453,15 +453,6 @@ class MenuApplicationLauncher(ApplicationLauncher):
|
|||||||
appComment = self.appComment
|
appComment = self.appComment
|
||||||
if self.highlight:
|
if self.highlight:
|
||||||
try:
|
try:
|
||||||
#color = self.labelBox.get_style_context().get_color(Gtk.StateFlags.SELECTED).to_string()
|
|
||||||
#if len(color) > 0 and color[0] == "#":
|
|
||||||
#appName = "<span foreground=\"%s\"><b>%s</b></span>" % (color, appName);
|
|
||||||
#appComment = "<span foreground=\"%s\"><b>%s</b></span>" % (color, appComment);
|
|
||||||
#appName = "<b>%s</b>" % (appName);
|
|
||||||
#appComment = "<b>%s</b>" % (appComment);
|
|
||||||
#else:
|
|
||||||
#appName = "<b>%s</b>" % (appName);
|
|
||||||
#appComment = "<b>%s</b>" % (appComment);
|
|
||||||
appName = "<b>%s</b>" % appName
|
appName = "<b>%s</b>" % appName
|
||||||
appComment = "<b>%s</b>" % appComment
|
appComment = "<b>%s</b>" % appComment
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
@ -43,9 +43,6 @@ class pluginclass(object):
|
|||||||
# This should be the first item added to the window in glade
|
# This should be the first item added to the window in glade
|
||||||
self.content_holder = self.builder.get_object("System")
|
self.content_holder = self.builder.get_object("System")
|
||||||
|
|
||||||
# Items to get custom colors
|
|
||||||
self.itemstocolor = [self.builder.get_object("viewport2")]
|
|
||||||
|
|
||||||
# Gconf stuff
|
# Gconf stuff
|
||||||
self.settings = Gio.Settings("com.linuxmint.mintmenu.plugins.system_management")
|
self.settings = Gio.Settings("com.linuxmint.mintmenu.plugins.system_management")
|
||||||
|
|
||||||
|
@ -93,10 +93,10 @@ class mintMenuPreferences():
|
|||||||
|
|
||||||
page = SettingsPage()
|
page = SettingsPage()
|
||||||
self.builder.get_object("box_appearance").add(page)
|
self.builder.get_object("box_appearance").add(page)
|
||||||
section = page.add_section(_("Colors"), _("Custom colors and theme"))
|
section = page.add_section(_("Appearance"), _("Custom theme"))
|
||||||
section.add_row(GSettingsSwitch(_("Use custom colors"), "com.linuxmint.mintmenu", "use-custom-color"))
|
# section.add_row(GSettingsSwitch(_("Use custom colors"), "com.linuxmint.mintmenu", "use-custom-color"))
|
||||||
section.add_reveal_row(GSettingsColorChooser(_("Headings"), "com.linuxmint.mintmenu", "custom-heading-color"), "com.linuxmint.mintmenu", "use-custom-color")
|
# section.add_reveal_row(GSettingsColorChooser(_("Headings"), "com.linuxmint.mintmenu", "custom-heading-color"), "com.linuxmint.mintmenu", "use-custom-color")
|
||||||
section.add_reveal_row(GSettingsColorChooser(_("Background"), "com.linuxmint.mintmenu", "custom-color"), "com.linuxmint.mintmenu", "use-custom-color")
|
# section.add_reveal_row(GSettingsColorChooser(_("Background"), "com.linuxmint.mintmenu", "custom-color"), "com.linuxmint.mintmenu", "use-custom-color")
|
||||||
options = []
|
options = []
|
||||||
options.append(["default", _("Desktop theme"), "default"])
|
options.append(["default", _("Desktop theme"), "default"])
|
||||||
themes = glob.glob("/usr/share/themes/*/*/gtkrc")
|
themes = glob.glob("/usr/share/themes/*/*/gtkrc")
|
||||||
|
@ -8,12 +8,6 @@
|
|||||||
<description></description>
|
<description></description>
|
||||||
</key>
|
</key>
|
||||||
|
|
||||||
<key type="b" name="use-custom-color">
|
|
||||||
<default>false</default>
|
|
||||||
<summary></summary>
|
|
||||||
<description></description>
|
|
||||||
</key>
|
|
||||||
|
|
||||||
<key type="b" name="tooltips-enabled">
|
<key type="b" name="tooltips-enabled">
|
||||||
<default>false</default>
|
<default>false</default>
|
||||||
<summary></summary>
|
<summary></summary>
|
||||||
@ -68,17 +62,6 @@
|
|||||||
<description></description>
|
<description></description>
|
||||||
</key>
|
</key>
|
||||||
|
|
||||||
<key type="s" name="custom-color">
|
|
||||||
<default>"#DEDEDE"</default>
|
|
||||||
<summary></summary>
|
|
||||||
<description></description>
|
|
||||||
</key>
|
|
||||||
|
|
||||||
<key type="s" name="custom-heading-color">
|
|
||||||
<default>"#3C3C3C"</default>
|
|
||||||
<summary></summary>
|
|
||||||
<description></description>
|
|
||||||
</key>
|
|
||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user